Mysql

InnoDB,將 TRIGGER 寫入表中

  • March 9, 2016
Table1 "user_address"
Field "u_id"
Field "street_name"
Field "locality_name"

Table2 "street_master"
Field "s_id"
Field "s_name"

我應該寫一個觸發器,在插入之前 user_address(table1) 檢查 NEW.street_name 是否已經存在於 table2 的 s_name 中,如果不存在則 NEW.street_name 插入到 table2 中。

我不知道該怎麼做。它只能通過觸發器來完成。

鑑於您的表結構:

create table user_address (
u_id integer auto_increment primary key,
street_name varchar(1000),
locality_name varchar(1000)
);

create table street_master
(
s_id integer auto_increment primary key,
s_name varchar(1000)
);

這將完成這項工作:

DELIMITER $$
create trigger user_address_btrig
before insert on user_address
for each row
begin
DECLARE CNT INT;
SET CNT = ( select count(*) from street_master where s_name = new.street_name );

IF CNT=0
THEN
insert into street_master (s_name) values (NEW.street_name);
END IF;
end;
$$
DELIMITER ;

去測試:

insert into user_address (street_name, locality_name) values ( 'test street', 'test locality' );

select * from street_master where s_name = 'test street';

我建議您閱讀有關觸發器的 MySQL 文件並自己學習。

引用自:https://dba.stackexchange.com/questions/131675