我有3张桌子: 1.用户 - 这里“userd id”是主键 2. UserPermision - 其中“userd id”是外键并且有“pageid”coloumn 3.页面 - 此处页面ID是主键
现在我需要编写一个查询,当我在一个新用户说用户id =“1”时,应该将此用户ID 1插入到Userpermision表中,对于该用户,它应该从页面表中获取所有页面。
答案 0 :(得分:1)
我假设你正在使用InnoDB 在这种情况下,您有外键约束和事务。
如果不是,你将不得不使用触发器。
START TRANSACTION;
INSERT INTO users (name, etc) VALUES ('test', 'remainder');
SELECT last_insert_id() INTO @my_user_id;
INSERT INTO userpermission (userid, permission, pageid)
SELECT
@my_user_id as user_id
, 'all' as permission
, pageid
FROM pages
WHERE pages.userid = @my_user_id;
COMMIT;
这假设您已经为该用户制作了网页。
链接强>
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
答案 1 :(得分:0)
您需要两个INSERT查询,每个表一个。
INSERT INTO Users (user_id,...) VALUES (:user_id,...)
INSERT INTO UserPermission (user_id,page_id)
SELECT :user_id, page_id FROM Page
您可以在同一个事务中执行它们,也可以从Users表上的AFTER INSERT触发器执行第二个事务。