MYSQL在建表时如何实现多表关联?

时间:2022-07-25 21:45:01
我建A.B.C三个表,C表的某一列约束为A.B两个表的某列,如何写?我的如下写法,是错误的:
FOREIGN KEY(f_name) REFERENCES A(guid_code),B(guid_code)
请高人指点。

6 个解决方案

#1


Moved to the Mysql

#2


分开写先参照A,再另写一句参照B

#3


立刻试验一下。

#4


多列外键组合,必须用表级别约束语法: 
create table classes(         
 id int,         
 name varchar(20),         
 number int,         
 primary key(name, number) 
 ); 
 create table student(         
 id int auto_increment primary key,         
 name varchar(20),         
 classes_name varchar(20),         
 classes_number int,                
 foreign key(classes_name, classes_number) references classes(name, number) 
 );   

#5


我的意思是C表中的f_name字段约束为B表和A表的guid_code字段,该如何写这个语句,简单表述如下:
C表中f_name字段的值只能是B表或A表的guid_code字段的值。

#6


C表中的f_name字段约束为B表A表的guid_code字段
C表中f_name字段的值只能是B表A表的guid_code字段的值

楼主最好明确下来到底是 还是

,则可以定义两次独立外键实现,
,无法实现。

#1


Moved to the Mysql

#2


分开写先参照A,再另写一句参照B

#3


立刻试验一下。

#4


多列外键组合,必须用表级别约束语法: 
create table classes(         
 id int,         
 name varchar(20),         
 number int,         
 primary key(name, number) 
 ); 
 create table student(         
 id int auto_increment primary key,         
 name varchar(20),         
 classes_name varchar(20),         
 classes_number int,                
 foreign key(classes_name, classes_number) references classes(name, number) 
 );   

#5


我的意思是C表中的f_name字段约束为B表和A表的guid_code字段,该如何写这个语句,简单表述如下:
C表中f_name字段的值只能是B表或A表的guid_code字段的值。

#6


C表中的f_name字段约束为B表A表的guid_code字段
C表中f_name字段的值只能是B表A表的guid_code字段的值

楼主最好明确下来到底是 还是

,则可以定义两次独立外键实现,
,无法实现。