试图绕过这一个,但一直没有成功。
基本上我正在尝试创建一个只包含两个表的数据库。 第一个表是登录表,包含列:
User ID
Username
Password
First Name
Last Name
第二个表是投票表,包含列:
User ID
Vote 1
Vote 2
Vote 3
等。等
无论如何,我可以将这些表与用户ID作为主键关联,可以级联更新/删除,这样当我在登录表中添加一个条目时,它会自动在投票表中创建一个条目相同的用户ID和所有投票列的默认值?
我可以将投票添加到主表中,但希望尽可能地将它们分开,因为不是每个人都会创建投票。
非常感谢 编
答案 0 :(得分:0)
您可以在logins
表格上指定插入trigger。
每次将行插入logins
表时都会执行此操作。您可以指定触发器要执行的操作。在这种情况下,您可以创建触发器,使用刚刚在vote
表中创建的ID以及默认值将单行插入login
表。
类似于:
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');
答案 1 :(得分: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;
确保在投票表的表定义中设置了默认值。
请注意使用盐渍哈希密码。