2014-09-24 80 views
0

兩個MySQL表使用外鍵和SQL語句

表1包括:ACCOUNT_ID [主鍵,自動遞增]

表2包括:CUSTOMER_ID [主鍵,自動遞增],ACCOUNT_ID [外鍵]

現在的問題是,當我執行一個涉及兩個表的INSERT INTO語句時(這兩個表在這時是空的),它會在第一個表中輸入值,然後它會釋放一個錯誤第二張桌子。

我認爲問題是第二個表沒有收到第一個表account_id,所以它會在我的程序中拋出一個錯誤。

Using cmd = New MySqlCommand("START TRANSACTION;INSERT INTO account_table(uname,pass,level) VALUES (?,?,?);INSERT INTO customer_table(fname,lname,mname) VALUES(?,?,?);COMMIT;", con) 

有沒有某種方式,當帳戶表成功記錄值時,customer_table會自動更新其外鍵?我嘗試了CASCADE,但它並沒有在桌面上更新?

回答

1

你的表定義應該是這樣的:

Accounts 
-------- 
ID (identity column) 
uname 
passHash 
level 

Customers 
--------- 
ID (identity column) 
AcccountID (foreign key) 
fname 
lname 
mname

注意,我改變了passpassHash從不以明文形式存儲密碼。

現在,您可以更新您的SQL是這樣的:

START TRANSACTION; 
DECLARE @AccountID int; 
INSERT INTO account_table(uname,pass,level) VALUES (?,?,?); 
Set @AccountID = LAST_INSERT_ID(); 
INSERT INTO customer_table(AccountID, fname,lname,mname) VALUES(@AccountID, ?,?,?); 
COMMIT; 
+0

它不存儲任何數據:/ – user2172157 2014-09-24 14:46:59