我有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?
答案 0 :(得分:0)
您可以将键与表创建分开。只需在alter table
语句后添加create table
语句即可。在该alter table中,您可以add contraint foreign key ...
。