2011-08-04 20 views
-1

私は3つのテーブルを持っています 1.ここでは "userd id"はプライマリキーです 2. UserPermision - "userd id"は外部キーで、 pageid "coloumn 3.ページ - ここのページのIDはプライマリキーです私はMysqlのクエリを実装するロジックが必要です

私は新しいユーザーを挿入するときにユーザーID =" 1 "と言うときにこのユーザーID 1をUserpermisionに挿入する必要がありますこのユーザーのために、それはページテーブルからすべてのページを持っています。

+0

つの質問:ユーザーがすべてのpremissionを持っている場合は、なぜあなたはpermissionsystemが必要なのでしょうか?私はあなたが[INSERT TRIGGER](http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html) – Jacob

+0

を見てみるべきだと思っています。あなたの仕事? – marcelog

答えて

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

+0

ありがとうございます:) –

0

テーブルごとに1つずつ、2つの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トリガーから二番目を実行することができます。

+0

通常、テーブルには明示的なidを割り当てませんが、MySQLにauto_increment idを割り出させます。 – Johan

+0

@Frazz:ユーザーテーブルに新しいユーザーを挿入しました。ユーザー権限テーブルに同じユーザーを挿入する必要があり、その特定のユーザーのページテーブルからすべてのページを取得する必要があります。例えば、もし私が5ページを持っているなら、パーミッションテーブルのこのユーザーは5ページのレコードを持っています。ここで私はクエリを書くことができませんか? –

関連する問題