MySQL中有以下内容:
alter table TABLE_A
ADD CONSTRAINT fk_id (id) REFERENCES TABLE_B(id)
ON DELETE CASCADE ON UPDATE CASCADE;
和
一样alter table TABLE_A
ADD FOREIGN KEY (id) REFERENCES TABLE_B(id);
除了它还在关系上添加了BTREE索引?或者它们相互补充?
答案 0 :(得分:4)
两个查询都或多或少相同,但根据manual,FOREIGN KEY
应存在于两个查询中。
[CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option]
CONSTRAINT [symbol]
的好处是您可以命名约束而不是MySQL为您生成名称;此符号在数据库中必须是唯一的,并且可用于稍后删除约束。
通过在创建后检查表结构可以看到生成的符号名称:
SHOW CREATE TABLE TABLE_A;
答案 1 :(得分:0)
CONSTRAINT 语法纯粹是出于命名目的,因此您可以使用该名称在表的任何其他列中实现约束。
您Answer的问题