「Mysql/trigger」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==トリガー一覧== SHOW TRIGGERS; ==サンプル== usersに入れると自動で、commandsにデータが入るように create table users ( id int unsigned pr...」) |
|||
(同じ利用者による、間の3版が非表示) | |||
行28: | 行28: | ||
END; | END; | ||
$$ | $$ | ||
− | + | ||
DELIMITER; | DELIMITER; | ||
以下データを入れると・・ | 以下データを入れると・・ | ||
− | + | insert into users(name) values('taro'); | |
− | + | select * from users; | |
− | + | +----+------+ | |
− | + | | id | name | | |
− | + | +----+------+ | |
− | + | | 1 | taro | | |
以下テーブルに自動で入っていることを確認 | 以下テーブルに自動で入っていることを確認 | ||
行46: | 行46: | ||
+----+---------------+ | +----+---------------+ | ||
| 1 | username=taro | | | 1 | username=taro | | ||
+ | |||
+ | ==トリガー削除== | ||
+ | DROP TRIGGER command1; | ||
+ | |||
+ | ==実行権限が違うと以下エラーが出る== | ||
+ | ERROR 1449 (HY000): The user specified as a definer ('root'@'localhost') does not exist |
2018年3月20日 (火) 16:29時点における最新版
トリガー一覧
SHOW TRIGGERS;
サンプル
usersに入れると自動で、commandsにデータが入るように
create table users ( id int unsigned primary key auto_increment, name varchar(31) );
create table commands ( id int unsigned primary key auto_increment, value varchar(31) );
以下トリガー作成
DELIMITER $$ CREATE TRIGGER command1 AFTER INSERT ON users FOR EACH ROW BEGIN declare str CHAR(255); SET str = concat('username=', new.name); INSERT into commands SET value=str; END; $$ DELIMITER;
以下データを入れると・・
insert into users(name) values('taro'); select * from users; +----+------+ | id | name | +----+------+ | 1 | taro |
以下テーブルに自動で入っていることを確認
select * from commands; +----+---------------+ | id | value | +----+---------------+ | 1 | username=taro |
トリガー削除
DROP TRIGGER command1;
実行権限が違うと以下エラーが出る
ERROR 1449 (HY000): The user specified as a definer ('root'@'localhost') does not exist