2012-10-19 3 views
2

Есть ли универсальный способ получения удаленных/вставленных/обновленных строк в триггер? Я хочу создать один триггер (я имею в виду один кусок кода в моем приложении), который должен работать на Oracle, Sql Server и Postgres. Является ли это возможным? Я использую драйверы odbc для подключения к различным dbs.Универсальный способ ODBC для получения удаленных строк в триггере

Он работает в SQL Server, но не в Oracle.

CREATE TRIGGER schema.trg_nameON schema.table_name 
       FOR DELETE 
       AS 
       BEGIN 
        DECLARE @id BIGINT; 

        SELECT @id = d.ID 
        FROM deleted d 

        DELETE 
        FROM schema.table_name 
        WHERE TOP_ID = @id; 
       END 
+0

и, кстати, это было бы очень плохой триггер на SQL-сервере, так как предполагает, что только одна запись когда-либо изменена, и это очень плохое предположение, которое вы не делаете при написании триггера. ANytimeyou имеет триггер на SQL-сервере, где вы устанавливаете значение для вставленного или удаляемого в скалярное varaiable, триггер является неправильным и его необходимо переписать. – HLGEM

ответ

1

нет, каждый RDMS будет иметь свой собственный синтаксис. Синтаксис, используемый вами, представляет собой синтаксис SQL-сервера.

Что вы подразумеваете под созданием триггера приложения? Пожалуйста, предоставьте нам дополнительную информацию

+0

Я создаю приложение, которое будет проверять, существуют ли какие-либо объекты в разных dbs. Один из этих объектов - это триггер. Я думал, что могу создать один кусок кода, но я вижу, что это невозможно. – user1759320

+1

нет нет, каждая БД будет иметь свой собственный синтаксис – Diego