【发布时间】:2013-10-30 23:22:38
【问题描述】:
我正在尝试响应在一个表 (A) 中插入一行,以根据第三个表 (C) 的值创建或更新第二个表 (B) 中的多行(可以连接到第一个)。
我有以下构造,
CREATE TRIGGER MyTrigger AFTER INSERT ON A
BEGIN
INSERT OR REPLACE INTO B (ID, T1, T2, Role)
VALUES
(
( SELECT ID FROM C WHERE R1 = NEW.R1 ),
NEW.T1,
B.T2, -- The existing row's T2
( SELECT Role FROM C WHERE R1 = NEW.R1 ),
)
END;
Table A has columns ID, T1, R1
Table B has columns ID, T1, T2, Role
Table C has columns ID, R1, R2, Role
我在尝试编写触发器时至少有两个问题
- 我不知道如何在 REPLACE 案例中引用 B 的现有值,因此是“B.T2”
- 在表 B 中执行 INSERT/REPLACE 时,我不知道如何从表 C 的同一行中引用多个列(R1、角色)。
感谢您为解决此问题提供的任何帮助。
【问题讨论】:
-
使用
SELECT ... FROM B WHERE ROWID=NEW.ROWID而不是VALUES(...) -
你最好写一个答案并接受它!只是为了避免保留未解决的问题。