如何在旧的MySQL(如5.0或5.1)中强制使用外键(ID1,ID2)?

时间:2014-01-13 12:58:01

标签: mysql sql

我有MainTb1 (ID1 int, text varchar(255)) & MainTb2 (ID2 int, text varchar(255))

我打算创建包含这些数据的Tb1

ID1 - ID2 - other columns....
12 - 25 - xxxx
24 - 63 - xxx
.....

创建将包含Tb1中存在的组合(ID1,ID2)的Tb2。

ID1 - ID2 - other columns....
12 - 25 - xxxx
.....

所以,我试过了:

create table Tb1 (ID1 int, ID2 int, Foreign key (ID1) references MainTb1(ID1),
 Foreign key (ID2) references MainTb2(ID2) )

create table Tb2 (ID1 int, ID2 int, Foreign key (ID1, ID2) references Tb1(ID1, ID2))

我想要的只是Tb2中的组合键(ID1,ID2)仅在Tb1中存在精确组合键(ID1,ID2)时才存在。例如,在Tb1中我们得到(ID1=12 & ID2=25) & (24,63),所以如果用户将(ID1=12 & ID2=25)插入到Tb2中,那么它将被允许,如果用户插入(12,63)int Tb2则它将不允许。

创建Tb2(create table Tb2 (ID1 int, ID2 int, Foreign key (ID1, ID2) references Tb1(ID1, ID2)))时,MySQL5.0中出现150错误,但是如果我使用Mysql5.5则没有问题。但我无法改变新的Mysql版本,因为它是遗留系统。

那么如何在旧的MySQL中强制使用外键(ID1,ID2),如5.0或5.1?

1 个答案:

答案 0 :(得分:0)

您可以将键与表创建分开。只需在alter table语句后添加create table语句即可。在该alter table中,您可以add contraint foreign key ...