Mysql 我们可以使用主键的约束名称作为外键引用吗?
例如,我正在创建两个表,如下所示:Mysql 我们可以使用主键的约束名称作为外键引用吗?,mysql,sql,ddl,Mysql,Sql,Ddl,例如,我正在创建两个表,如下所示: create table A ( department_id int, college_id int, constraint Pk_name primary key(department_id,college_id) ); create table B ( student_name varchar(75), department_id int, college_id int, foreign key(department_id,c
create table A (
department_id int,
college_id int,
constraint Pk_name primary key(department_id,college_id)
);
create table B (
student_name varchar(75),
department_id int,
college_id int,
foreign key(department_id,college_id) references A(Pk_name)
);
我可以这样写吗 我不这么认为,因为RDBMS无法知道
PK_name
是一个列还是一个约束名,所以我建议您坚持使用通常的方法:
创建表A(
国际部,
国际学院,
约束主键名称主键(系id、学院id)
);
创建表B(
学生姓名varchar(75),
国际部,
国际学院,
外键(系id、学院id)引用A(系id、学院id)
);代码>
一旦找到其他答案,我将更新答案。我正在使用Mysql Workbench 8。我试过了,但它出错了。错误是:“添加外键失败。缺少约束的“Pk_name”列。”据我所知,没有数据库支持这样的扩展。我不知道有任何数据库支持这样的扩展。虽然这看起来不是一个坏主意,但当数据库增长并最终拥有许多表时,它可能会令人困惑。而且,几乎没有人说出PK约束。有时,唯一约束比PK约束具有更多可见名称。此外,引擎将如何区分列和约束名称?可能最后的语法会比你在这里展示的更详细。谢谢你回答我的问题。如果您找到答案,请更新。谢谢。非常好的观点@anouaressayd。在任何情况下,语法都应该清楚地区分“column case”和“containt name case”。