简体   繁体   English

触发器上的 SQL ALTER TABLE

[英]SQL ALTER TABLE on TRIGGER

I have a database with 2 tables that look like :我有一个包含 2 个表的数据库,如下所示:

  TABLE_1                         TABLE_2
ID      NAME                     ID      object1       object2                

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

I want that for each new Object on TABLE_1, it add a column on TABLE_2.我希望对于 TABLE_1 上的每个新对象,它在 TABLE_2 上添加一列。 And for each new ID on TABLE_1, it add a new Occurence on TABLE_2 (but I know how to do "only" this one).对于 TABLE_1 上的每个新 ID,它会在 TABLE_2 上添加一个新的出现次数(但我知道如何“仅”执行此操作)。

For exemple with INSERT INTO TABLE_1 values(1,"object3");例如INSERT INTO TABLE_1 values(1,"object3"); I want我想要

  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

and with INSERT INTO TABLE_1 values(3,"object2);并使用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

It's not necessary to fill the added column (I can do it manually).没有必要填充添加的列(我可以手动完成)。

I tried to do this我试图这样做

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;

But it didn't work... Can you help me ?但它没有用...你能帮我吗? (And sorry if my english isn't perfect) (对不起,如果我的英语不完美)

It looks like you need more tables to achieve what you want.看起来你需要更多的表来实现你想要的。

Table IDs should be unique.表 ID 应该是唯一的。 "TABLE_1" IDs that are not unique should be kept in another table as Primary Keys, then your "TABLE_1" table could reference that other table containing those IDs as ForeignKeys.不唯一的“TABLE_1”ID 应作为主键保存在另一个表中,然后您的“TABLE_1”表可以将包含这些 ID 的其他表作为外键引用。

Your "TABLE_2" table looks like it should be split into two: one that would contain your "Objects", and one that associates "Objects" and "IDs".您的“TABLE_2”表看起来应该分为两部分:一张包含您的“对象”,另一张将“对象”和“ID”关联起来。

Or is it only a view of "TABLE_1", displayed differently?或者它只是“TABLE_1”的视图,显示方式不同? Then you can just drop it.然后你可以放下它。

Please read about Junction tables , and SQL and Relational databases in general, because you need more knowledge before starting your project.请阅读一般的连接表,以及 SQL 和关系数据库,因为在开始您的项目之前您需要更多的知识。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM