Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我们可以使用主键的约束名称作为外键引用吗?_Mysql_Sql_Ddl - Fatal编程技术网

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”。