TRIGGER上的SQL ALTER TABLE

时间:2016-04-05 11:52:30

标签: mysql sql

我有一个包含2个表的数据库,如下所示:

  TABLE_1                         TABLE_2
ID      NAME                     ID      object1       object2                

1      object1                   1        TRUE          FALSE
2      object1                   2        TRUE          TRUE
2      object2

我希望TABLE_1上的每个新对象都在TABLE_2上添加一列。对于TABLE_1上的每个新ID,它在TABLE_2上添加了一个新的Occurence(但我知道如何“仅”这个)。

INSERT INTO TABLE_1 values(1,"object3");为例 我想要

  TABLE_1                    TABLE_2
ID      NAME               ID      object1       object2       object3               

1      object1             1        TRUE          FALSE         TRUE
2      object1             2        TRUE          TRUE          FALSE
2      object2                    
1      object3

INSERT INTO TABLE_1 values(3,"object2);

  TABLE_1                    TABLE_2
ID      NAME               ID      object1       object2       object3               

1      object1             1        TRUE          FALSE         TRUE
2      object1             2        TRUE          TRUE          FALSE
2      object2             3        FALSE         TRUE          FALSE                    
1      object3
3      object2

没有必要填写添加的列(我可以手动完成)。

我试图这样做

CREATE TRIGGER triggTest 
BEFORE INSERT 
ON TABLE_1 
WHEN (NEW.NAME not in (SELECT NAME FROM TABLE_1))
BEGIN 
ALTER TABLE TABLE_2
ADD NEW.NAME BOOLEAN
END;

但它不起作用......你能帮助我吗? (对不起,如果我的英语不完美)

1 个答案:

答案 0 :(得分:0)

看起来您需要更多表来实现您想要的目标。

表ID应该是唯一的。 “TABLE_1”不唯一的ID应作为主键保存在另一个表中,然后“TABLE_1”表可以引用包含这些ID的其他表作为ForeignKeys。

你的“TABLE_2”表看起来应该分为两个:一个包含你的“对象”,另一个包含“对象”和“ID”。

或者只是“TABLE_1”的视图,显示方式不同?然后你可以放弃它。

请阅读有关Junction tables以及SQL和关系数据库的一般信息,因为在开始项目之前需要更多知识。