2011-11-03 68 views
0

一直試圖圍繞這一個包裹我的頭,但一直不成功。在mysql表中級聯更新

基本上我試圖創建一個只包含兩個表的數據庫。 第一個表是登錄表,包含列:

User ID 
Username 
Password 
First Name 
Last Name 

第二個表是投票表,並且包含列:

User ID 
Vote 1 
Vote 2 
Vote 3 

等等,等等

反正是有我可以將這些表與用戶ID關聯起來作爲主鍵,可以級聯更新/刪除,這樣當我向登錄表中添加條目時,它會自動在具有相同用戶標識的票表中創建條目,並且所有投票欄的默認值?

我可以將投票添加到主表中,但希望儘可能將它們分開,因爲不是每個人都會創建投票。

非常感謝 編

回答

0

你可以在logins表指定插入trigger

這將在每次將行插入logins表時執行。你可以指定你想要觸發器做什麼。在這種情況下,您可以創建觸發器,使用login表中剛剛創建的ID以及默認值將單個行插入到vote表中。

因此,像:

CREATE TRIGGER logins_default_vote AFTER INSERT ON logins 
FOR EACH ROW 
INSERT INTO vote (UserID,Vote1,Vote2,Vote3) 
VALUES (NEW.UserId,'vote1 default','vote2 default','vote3 default'); 
+0

謝謝,我會試試這個! – Eds

0

如果你想級聯更新,你需要使用一個交易:

START TRANSACTION; 

INSERT INTO logins (username, passhash, salt, `first name`, `last name`) 
    VALUES ('$username', SHA2(CONCAT('$salt','$password'),512), '$salt', 
      '$firstname', '$lastname'); 
SELECT @userid:= LAST_INSERT_ID(); 
INSERT INTO votes (userid) VALUES (@userid); 

COMMIT; 

請確保您有在表定義設置的默認值票表。

請注意使用鹽漬散列密碼。

+0

謝謝,我會試試這個! – Eds