我有一个包含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;
但它不起作用......你能帮助我吗? (对不起,如果我的英语不完美)
答案 0 :(得分:0)
看起来您需要更多表来实现您想要的目标。
表ID应该是唯一的。 “TABLE_1”不唯一的ID应作为主键保存在另一个表中,然后“TABLE_1”表可以引用包含这些ID的其他表作为ForeignKeys。
你的“TABLE_2”表看起来应该分为两个:一个包含你的“对象”,另一个包含“对象”和“ID”。
或者只是“TABLE_1”的视图,显示方式不同?然后你可以放弃它。
请阅读有关Junction tables以及SQL和关系数据库的一般信息,因为在开始项目之前需要更多知识。