2016-05-21 3 views
1

Я пытаюсь создать триггер для Table3, чтобы вставить новую строку каждой у меня есть основы информации о триггерах это то, что я пытался сделать, однако я получил исполнение ошибки прервалКак создать триггер для вложенных таблиц

delimiter # 
create trigger TABLE3_INSERT_TRIGGER after insert on table2 
for each row 
begin 
insert into table3 (tableZ_ID, table2_ID) values (new.tableZ_ID, new.table2_ID); 
end# 

delimiter ; 
 +------------+ 
     | tableZero | 
     +------------+ 
     |tableZ_ID(PK| 
     +------------+ 
     |tableZ_Name | 
     +------------+ 
     |table1_ID(FK| 
     +------------+ 

     +------------+ 
     | table1  | 
     +------------+ 
     |table1_ID(PK| 
     +------------+ 
     |table1_Name | 
     +------------+ 

     +------------+ 
     | table2  | 
     +------------+ 
     |table2(PK) | 
     +------------+ 
     |table1 (FK) | 
     +------------+ 
     |table2Info | 
     +------------+ 


     +------------+ 
     | table3  | 
     +------------+ 
     |tableZ_ID(FK| 
     +------------+ 
     |table2_ID(FK| 
     +------------+ 

ответ

0

согласно вашей конструкции стола должны быть доступны в tableZero в противном случае он будет давать ошибку, связанную с ссылочным ключом данных.

Таблица 1 -> 0 таблица

дайте мне знать, если хотите получить больше информации

0

В триггер для таблицы 2 вы ссылаетесь new.tableZ_ID, но не tableZ_ID столбец в table2.

Для того, чтобы получить tableZ_ID, вы должны присоединиться к вашему table2 значения обратно в таблицу, которая содержит tableZ_ID столбца, который tableZero основанных на схему. Учитывая ваши отношения FK, чтобы получить от table2 до tableZero, вам необходимо пройти table1. Триггер будет выглядеть примерно так:

delimiter # 
create trigger TABLE3_INSERT_TRIGGER after insert on table2 
for each row 
begin 
INSERT INTO table3 (tableZ_ID, table2_ID) 
SELECT t0.tableZ_ID, new.table2_ID 
FROM table1 t1 
INNER JOIN tableZero t0 on t1.table1_ID = t0.table1_ID 
WHERE t1.table1_ID = new.table1_ID; 
end# 

delimiter ; 
Смежные вопросы