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

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

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

And create Tb2 that will contain the combined (ID1, ID2) that existed in Tb1.

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

So, I tried:

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))


我想要的是,只有在Tb1中存在确切的组合键(ID1,ID2)时,Tb2中的组合键(ID1,ID2)才存在。例如,在Tb1中,我们得到了(ID1=12 & ID2=25) & (24,63),因此,如果用户在Tb2中插入(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(例如5.0或5.1)中强制使用外键(ID1,ID2)呢?

最佳答案

您可以将键与表创建分开。只需在您的alter table语句之后放置一个create table语句。在该更改表中,您可以add contraint foreign key ...

关于mysql - 如何在旧的MySQL(例如5.0或5.1)中强制使用外键(ID1,ID2)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21091920/

10-14 04:23