我需要一个逻辑来实现Mysql查询

时间:2011-08-04 13:06:38

标签: mysql mysql-management

我有3张桌子: 1.用户 - 这里“userd id”是主键 2. UserPermision - 其中“userd id”是外键并且有“pageid”coloumn 3.页面 - 此处页面ID是主键

现在我需要编写一个查询,当我在一个新用户说用户id =“1”时,应该将此用户ID 1插入到Userpermision表中,对于该用户,它应该从页面表中获取所有页面。

2 个答案:

答案 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触发器执行第二个事务。