更改表错误:150

时间:2014-04-11 20:04:18

标签: mysql sql

我无法改变表格以添加外键。错误:150出现。无法弄清楚出了什么问题。请协助

CREATE TABLE Staff (staffNo varchar(10) NOT NULL, Fname varchar(50),
Lname varchar(50), Staff_Adress varchar(100), Salary numeric(65),
JobPosition varchar(15), Sex varchar(1), DateOfBirth date, NIN varchar(25),OffceNo varchar(10),
PRIMARY KEY (staffNo),
CHECK (Sex IN ('M', 'F')));

CREATE TABLE Office (OfficeNo INT(10) unsigned NOT NULL, Address varchar(50) NOT NULL, City varchar (25) NOT NULL,
PhoneNo varchar(10) NOT NULL, ManagerNo varchar(10),
PRIMARY KEY (OfficeNo),
FOREIGN KEY (ManagerNo) references  Staff(staffNo));

alter table Staff
add foreign key (OffceNo) references Office(OfficeNo) on delete set NULL;

2 个答案:

答案 0 :(得分:2)

解决这些问题:

  1. 表必须使用InnoDB
  2. 列必须具有完全相同的数据类型

答案 1 :(得分:0)

你的问题在这里:

   alter table Staff
   add foreign key (OffceNo) references Office(OfficeNo) on delete set NULL;

你必须在员工表中更改此内容

   OffceNo varchar(10)

 OffceNo INT(10) unsigned

或者在Office表中。

 OfficeNo INT(10) unsigned NOT NULL

 OfficeNo varchar(10) NOT NULL

因为它们与使用外键的结构和数据类型相同。