前端之家收集整理的这篇文章主要介绍了
sqlite – 使用触发器自动增加,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
502_0@
我正在尝试
解决sqlite中的复合键不允许
自动增量的问题.
我不知道它是否可能,但我试图将最后使用的id存储在不同的表中,并在插入新的reccord时使用触发器分配下一个id.
我必须使用复合键,因为单个pk不是唯一的(因为数据库合并).
如何根据不同表中的值设置要插入的行的字段
到目前为止的查询是:
CREATE TRIGGER pk BEFORE INSERT ON product_order
BEGIN
UPDATE auto_increment SET value = value + 1 WHERE `table_name` = "product_order";
END
这会成功更新该值.但现在我需要将新值分配给新记录. (new.id).
如果使用AFTER INSERT触发器,则可以更新新插入的行,如下例所示.
CREATE TABLE auto_increment (value INT,table_name TEXT);
INSERT INTO auto_increment VALUES (0,'product_order');
CREATE TABLE product_order (ID1 INT,ID2 INT,name TEXT);
CREATE TRIGGER pk AFTER INSERT ON product_order
BEGIN
UPDATE auto_increment
SET value = value + 1
WHERE table_name = 'product_order';
UPDATE product_order
SET ID2 = (
SELECT value
FROM auto_increment
WHERE table_name = 'product_order')
WHERE ROWID = new.ROWID;
END;
INSERT INTO product_order VALUES (1,NULL,'a');
INSERT INTO product_order VALUES (2,'b');
INSERT INTO product_order VALUES (3,'c');
INSERT INTO product_order VALUES (4,'d');
SELECT * FROM product_order;