两个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,但它没有在桌面上更新?
答案 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;