Php mysql表中的级联更新
我一直在想这个问题,但都没有成功 基本上,我试图创建一个只包含两个表的数据库。 第一个表是logins表,包含以下列:Php mysql表中的级联更新,php,mysql,key,cascade,relational,Php,Mysql,Key,Cascade,Relational,我一直在想这个问题,但都没有成功 基本上,我试图创建一个只包含两个表的数据库。 第一个表是logins表,包含以下列: User ID Username Password First Name Last Name User ID Vote 1 Vote 2 Vote 3 第二个表是投票表,包含以下列: User ID Username Password First Name Last Name User ID Vote 1 Vote 2 Vote 3 等等等等 我是否可以将这些表与用户I
User ID
Username
Password
First Name
Last Name
User ID
Vote 1
Vote 2
Vote 3
第二个表是投票表,包含以下列:
User ID
Username
Password
First Name
Last Name
User ID
Vote 1
Vote 2
Vote 3
等等等等
我是否可以将这些表与用户ID关联为主键,从而可以级联更新/删除,以便在登录表中添加条目时,它会自动在投票表中创建具有相同用户ID的条目,并为所有投票列创建默认值
我可以将选票添加到主表中,但希望尽可能多地将它们分开,因为不是每个人都会创建选票
非常感谢
Eds您可以在
登录
表中指定插入
每次将一行插入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');
如果要级联更新,则需要使用事务:
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;
确保在投票表的表定义中设置了默认值
请注意使用了盐渍哈希密码