使用外键和SQL语句

时间:2014-09-24 13:26:47

标签: mysql vb.net phpmyadmin

两个MySQL表

表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 个答案:

答案 0 :(得分:1)

您的表格定义应如下所示:

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

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

请注意,我已将pass更改为passHash从不以纯文本格式存储密码。

现在您可以像这样更新您的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;