2015-09-02 9 views
0

Привет Я новичок в SQL-триггере. так как я пытался и искал в Интернете, и я не нашел никакого ясного результата. так вот моя проблема. У меня есть три таблицы:Объединение нескольких таблиц Sql trigger

Table1:

ID NAME (columns) 
1 prabhu 

TABLE2:

Id COUNTRY (columns) 
1 India 

Я хочу, чтобы отправить войти таблицу, если что-нибудь подобное вставки/обновления происходят в table2 Триггер SQL (DB2) должен сделать следующее, и результат должен быть в таблице журналов, подобной этому

LOGTABLE:

ID NAME  COUNTRY  
1 prabhu India 

Ваша помощь очень ценна.

+0

Здесь вы должны прочитать руководство db2, мы не будем писать ваш код (бесплатно). – jarlh

ответ

1

Попробуйте это,

-- Create tables 
create table table1(id int, empName varchar(20)); 
create table table2(id int, country varchar(20)); 
create table logtable(id int, empName varchar(20), country varchar(20)); 

-- Create trigger 
CREATE TRIGGER logtableAfterInsert ON table2 
after INSERT,DELETE,UPDATE 
AS 
BEGIN 
    declare @empid int; 
    declare @empname2 varchar(20); 
    declare @empcountry varchar(20); 

    select @empid=i.id from inserted i; 
    select @empcountry=i.country from inserted i; 
    select @empname2=tbl1.empName from table1 tbl1 where [email protected]; 

    insert into logtable values(@empid,@empname2,@empcountry); 

    PRINT 'Inserted' 
END 
GO 

После этого вставить значения,

insert into table1 values(1, 'prabhu'); 
insert into table2 values (1, 'India'); 

Проверьте результаты,

select * from table1; 
select * from table2; 
select * from logtable; 

Надежда это решает ...

BTW, Вам нужно добавить foreig n ключевое ограничение.

+0

его хороший, но синтаксис db2 отсутствует здесь .. было бы здорово, что это будет работать в db2 env .. –

+0

очень хорошее решение Mr.Raja .. Я преобразовал это в соответствии с db2 и работал нормально: как следует: –

0

CREATE OR REPLACE TRIGGER logtableAfterInsert после обновления ПО table2 ссылающейся NEW КАК NAUDIT стара как OAUDIT для каждой строки РЕЖИМ DB2SQL --BEGIN --ATOMIC вставить в logtable значений ((выбрать идентификатор из table2 tbl2 где tbl2. id = OAUDIT.id), (выберите empName из таблицы1 tbl1, где tbl1.id = (выберите id из таблицы2 tbl2, где tbl2.id = OAUDIT.id)) (выберите страну из таблицы2 tbl2, где tbl2.id = OAUDIT.id)); --END;

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