我正在尝试解决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, NULL, 'b'); INSERT INTO product_order VALUES (3, NULL, 'c'); INSERT INTO product_order VALUES (4, NULL, 'd'); SELECT * FROM product_order;