2017-01-26 8 views
1

このSQLを持ってください。データベースphpmyadminの挿入トリガー

CREATE TABLE `accounts` (
    `account_id` int(3) NOT NULL, 
    `username` varchar(36) NOT NULL, 
    `password` varchar(36) NOT NULL, 
    `email` varchar(60) NOT NULL, 
    `access_level` int(1) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `normal_profile` (
    `normal_profileid` int(11) NOT NULL, 
    `first_name` varchar(64) NOT NULL, 
    `middle_name` varchar(64) NOT NULL, 
    `last_name` varchar(64) NOT NULL, 
    `age` int(2) NOT NULL, 
    `gender` varchar(6) NOT NULL, 
    `account_id` int(3) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

ALTER TABLE `normal_profile` 
    ADD CONSTRAINT `normal_profile_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`account_id`); 

phpmyadmin ui

上記の私は制約を設定する方法です。

私は自分のアカウントテーブルに何かを挿入するたびに、私もnormal_profileテーブルへの挿入をクエリする必要がありますか?または私はそれを自動的に作成することができますので、DB自体が単にaccount_id = accounts.account_idのnormal_profileに行を追加しますか?

私は、挿入制約のあいまいな記憶を持っていますか、間違っていますか?

Adding Trigger UI phpmyadmin

+0

を試してみて、どのようにデータベースが関係のない分野に入るかを知ることになっています? – e4c5

+0

私はすでにnormal_profileテーブルでaccount_idをFKに設定しました。 もっと設定する必要はありますか? – john

答えて

0

この構文

delimiter # 
    CREATE TRIGGER after_accounts 
     AFTER insert ON accounts 
     FOR EACH ROW 
      BEGIN 
      -- your insert query 
      end# 

delimiter ; 

enter image description here

+0

phpmyadminでトリガーを追加する際に画像を追加しました。 defintion入力内にSQLクエリを挿入する場所はどこですか? – john

+0

あなたは定義テキストエリア –

+0

のあなたのインセットクエリにこれは良い方法ですか? または手動でphpでより受け入れ可能ですか? 私のaccount_idがAuto_Incrementなので、毎回新しいacc( 'username'、 'password'、 'email'、 'access_level')を作成すると、モデル関数の登録が完了した後、 トリガー方式がより受け入れられますか? – john