2013-05-03 42 views
0

假設我想爲登錄頁面創建一個表來保存用戶名和密碼,並將其引用到其他表中以存儲角色。使用兩個外鍵創建表失敗

CREATE TABLE Login (
username VARCHAR(50) NOT NULL, 
password VARCHAR(50) NOT NULL, 
PRIMARY KEY (username) 
); 

Create Table User (
username VARCHAR(50) NOT NULL, 
password VARCHAR(50) NOT NULL, 
FOREIGN KEY(password) REFERENCES Login(password), 
FOREIGN KEY(username) REFERENCES 
Login(username) 
); 

看起來與包含密碼相關,因爲插入數據時它需要是非空字段。表用戶可能有一個整數用於存儲角色或類似的東西,但我試圖簡化一下這個例子。

我收到以下錯誤:

ERROR 1005 (HY000): Can't create table 'databasename.user' (errno:150) 

Error 150 is a type mismatch but they appear to be the same type - not null and varchar(50) 

回答

1

外鍵只能指向唯一字段....主鍵字段隱式唯一。但密碼不是。

0

你的主鍵是唯一一個在登錄表,但您創建觸發只能有一個主鍵在登錄表中的兩個外鍵

CREATE TABLE Login (
username VARCHAR(50) NOT NULL, 
password VARCHAR(50) NOT NULL, 
PRIMARY KEY (username) 
); 

Create Table User (
username VARCHAR(50) NOT NULL, 
password VARCHAR(50) NOT NULL, 
FOREIGN KEY(username) REFERENCES 
Login(username) 
);