当我插入具有现有ID号的新记录时,我想创建一个重复的条目 即当我在ID字段中输入一个带有2的新行时,它将通过复制ID为2的行中的所有字段自动创建一个新条目
我正在使用以下触发器,但它无效。
1)在ID列中插入现有号码时触发器无法工作
2)当我将new.ID更改为new.col_2之类的其他字段时,触发器有效,但触发后也会创建一个额外的条目,我不想要它。
如何解决这两个问题或者是否有任何解决方法? 感谢。
CREATE TRIGGER "main"."NewTrigger" BEFORE INSERT ON "record" FOR EACH ROW WHEN new.ID is not NULL
BEGIN
INSERT INTO record (col_1, col_2)
SELECT col_1, col_2 FROM record
WHERE ID = new.ID;
END;
e.g。
原始表名为"记录"
ID | col_1 | COL_2
1 |阿达| 20个
2 |本| 56个
3 |糖果| 82个
当我插入这样的新条目时:
ID | col_1 | COL_2
2个
结果表"记录"将成为:
ID | col_1 | COL_2
1 |阿达| 20个
2 |本| 56个
3 |糖果| 82个
4 |本| 56个
答案 0 :(得分:0)
INSERT语句插入一个新行。 这不是你想要的,因为你已经插入了一行。
您需要做的是在插入后更改行中的值:
CREATE TRIGGER NewTrigger
AFTER INSERT ON record
FOR EACH ROW
WHEN NEW.ID IS NOT NULL AND NEW.Col1 IS NULL
BEGIN
UPDATE record
SET (Col1, Col2) = (SELECT Col1, Col2
FROM record
WHERE ID = NEW.ID
AND Col1 IS NOT NULL);
WHERE ID = NEW.ID
AND Col1 IS NULL;
END;
(使用行值需要SQLite 3.15.0或更高版本。)