2017-01-26 91 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表嗎?或者我可以自動創建它,以便數據庫本身只需將一行添加到normal_profile,其中account_id = accounts.account_id?

我對插入約束有一個模糊的記憶,或者我可能會誤會嗎?

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上添加了一個圖像添加觸發器。 我在哪裏把定義輸入內的SQL查詢? – john

+0

你只需要你的插入查詢定義文本區 –

+0

這是一個更好的方法? 或者在php中手動插入它更可接受? 因爲我的account_id是Auto_Increment,每次我創建一個新的acc('username','password','email','access_level'),在模型函數寄存器完成後調用另一個模型函數? 或者觸發方法更可接受嗎? – john