我尝试为table3创建触发器以插入新行每个我都有关于触发器的基本信息这是我试图做的但是我的错误执行被中断了
+------------+
| tableZero |
+------------+
|tableZ_ID(PK|
+------------+
|tableZ_Name |
+------------+
|table1_ID(FK|
+------------+
+------------+
| table1 |
+------------+
|table1_ID(PK|
+------------+
|table1_Name |
+------------+
+------------+
| table2 |
+------------+
|table2(PK) |
+------------+
|table1 (FK) |
+------------+
|table2Info |
+------------+
+------------+
| table3 |
+------------+
|tableZ_ID(FK|
+------------+
|table2_ID(FK|
+------------+
$scope.setColor = function(appColor){ $scope.data = ThemeColors.setColor(appColor); }
答案 0 :(得分:0)
根据您的表格设计,必须在tableZero中提供数据,否则会产生与参考密钥相关的错误。
表1 - >表0
如果想要更多信息,请告诉我
答案 1 :(得分:0)
在表2的触发器中,您引用了new.tableZ_ID
,但tableZ_ID
中没有table2
列。
要获得tableZ_ID
,您必须将table2
值重新加入包含tableZ_ID
列的表格,该列根据您的架构tableZero
。鉴于您的FK关系,为了从table2
到tableZero
,您必须通过table1
。触发器看起来像这样:
delimiter #
create trigger TABLE3_INSERT_TRIGGER after insert on table2
for each row
begin
INSERT INTO table3 (tableZ_ID, table2_ID)
SELECT t0.tableZ_ID, new.table2_ID
FROM table1 t1
INNER JOIN tableZero t0 on t1.table1_ID = t0.table1_ID
WHERE t1.table1_ID = new.table1_ID;
end#
delimiter ;