本当に役立つ質問が見つからないので、別の質問をします。
テーブル(部門)に外部キー制約を設定し、それをテーブル(従業員)の主キーにリンクしようとしています。列は従業員で(dno)と呼ばれ、部門で(dnumber)と呼ばれます。両方のフィールドは同じタイプですが、取得し続けます
mysql> alter table department
-> add foreign key (dnumber)
-> references employee (dno);
ERROR 1005 (HY000): Can't create table 'dba110.#sql-938_3' (errno: 150)
助言がありますか?
更新: dno 列と dnumber 列が署名されているか署名されていないかを確認しようとしています。
mysql> show create table employee;
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
| Table | Create Table
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
| employee | CREATE TABLE `employee` (
`Fname` varchar(8) DEFAULT NULL,
`Minit` varchar(2) DEFAULT NULL,
`Lname` varchar(8) DEFAULT NULL,
`SSN` varchar(9) NOT NULL,
`Bdate` date DEFAULT NULL,
`Address` varchar(27) DEFAULT NULL,
`Sex` varchar(1) DEFAULT NULL,
`Salary` float NOT NULL,
`Superssn` varchar(9) DEFAULT NULL,
`Dno` int(1) NOT NULL,
PRIMARY KEY (`SSN`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
1 row in set (0.00 sec)
mysql> show create table department;
+------------+-----------------------------------------
-------------------------------------+
| Table | Create Table
|
+------------+-----------------------------------------
-------------------------------------+
| department | CREATE TABLE `department` (
`dnumber` int(1) NOT NULL,
`dname` varchar(15) DEFAULT NULL,
`mgrssn` varchar(9) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+------------+-----------------------------------------
-------------------------------------+
1 row in set (0.00 sec)