用于链接表的SQL语句

时间:2011-07-06 04:04:26

标签: mysql sql

我有2张桌子

collection
==========
collection_id (primary key)
collection_name
collection_type

collectable
===========
collectable_id(primary key)
collectable_name
collectable_type
collectable_collection

什么是SQL语句,以便collectable_collection只能作为输入collection_id?对不起,如果这太简单了。这是特定于列的更改:collectable_collection还是表格:collectable

我正在使用MySQL数据库。

3 个答案:

答案 0 :(得分:2)

如果在应用程序级别而不是SQL中实现它会更好。只需检查id中插入的collectable_collection是否为collection_id,然后执行插入操作,如果collectable_collection有多个collection_id'秒。

修改

如果collectable_collection中只有一个ID,那么您可以使用Foreign Key。查看manual,了解有关如何使用它的更多信息

答案 1 :(得分:0)

使用coolection-id作为可收集表中的foreig键,只有当collection_id在收集表中出现时才会插入。

如果你想插入多个值,那么创建一个用于收集的日志表,这将用于在可收集表中获取集合值。

答案 2 :(得分:0)

您可以使用数据库管理工具,例如官方MySQL Workbench。在那里,您可以使用用户界面对数据库进行任何更改。

如果您希望使用SQL,则可以使用以下内容:

ALTER TABLE collectable
ADD CONSTRAINT FK_collectable_collection
FOREIGN KEY (collectable_collection)
REFERENCES collection (collection_id)

或者,您可以添加ON DELETE CASCADEON DELETE SET NULL以自动删除collectable表中受影响的行,或者在{NULL中设置对collection的引用1}}表被删除。