2015-03-10 2 views
2

У меня есть 2 стола по названию: train_information и ось.Вставка триггера в несколько столов

Train_information 

имеет на следующие:

train_id (PK) 
train_name 
train_length 
number_of_axles 

axle 

имеет на следующие:

axle_id (PK) 
train_id(FK) 
axle 

Когда я вставляю что-то на train_information, скажем, например, введите номер 16 в number_of_axles. Мне нужна таблица axle, чтобы получить ту же самую информацию автоматически.

Как это сделать с помощью триггера?

EDIT:

он работает теперь с этим кодом:

CREATE TRIGGER TriggerName AFTER INSERT ON train_information 
FOR EACH 
ROW 
BEGIN 
INSERT INTO axle(train_id, axle) 
VALUES (
NEW.train_id, NEW.number_of_axles 
); 

END 

Но сейчас он входит, например, номер 16 в таблице оси , но я хочу его поступить:

axle_id = 1 
train_id = 1 
axle = 1 

axle_id = 2 
train_id = 1 
axle = 2 

axle_id = 3 
train_id = 1 
axle = 3 

Возможно ли это?

ответ

1

Вы можете создать AFTER TRIGGER на Train_information стол, что-то вроде этого:

SQL Подробнее о After Triggers in SQL

CREATE TRIGGER TriggerName 
    ON Train_information 
    FOR INSERT 
    AS 
    BEGIN 
     SET NOCOUNT ON 
     INSERT INTO axle 
     (train_id, axle) 
    SELECT 
     train_id, 'axle_name' 
     FROM inserted 
    END 

MySQL Подробнее о After Triggers in MySQL

DELIMITER $$ 
CREATE TRIGGER TriggerName 
    AFTER INSERT ON Train_information FOR EACH ROW 
    BEGIN 
     INSERT INTO axle (train_id, axle) 
     VALUES (NEW.train_id, NEW.axle_name)    
    END; 
$$ 
DELIMITER ; 
+0

Я получаю следующую ошибку: MySQL meldt: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «ON train_information FOR INSERT AS BEGIN SET NOCOUNT ON» в строке 2. Я использую phpmyadmin – Mitch

+0

. Вы используете MySQL? –

+0

Да, я нажимаю: add trigger. Там я должен заполнить имя и т. Д. И поле, в котором говорится: Определение. Там я заполняю код. – Mitch

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