2012-10-19 4 views
2

트리거에서 삭제/삽입/업데이트 된 행을 가져 오는 보편적 인 방법이 있습니까? Oracle, SQL Server 및 Postgres에서 작동해야하는 하나의 트리거 (내 응용 프로그램에서 코드 한 개를 만듭니다)를 만들고 싶습니다. 가능한가? 다른 DB에 연결하기 위해 ODBC 드라이버를 사용하고 있습니다.트리거에서 삭제 된 행을 가져 오는 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 서버에서 트리거가 발생하면 트리거가 잘못되어 다시 작성해야합니다. – HLGEM

답변

1

아니요, 각 RDMS에는 고유 한 구문이 있습니다. 사용 된 구문은 SQL Server 구문입니다.

애플리케이션에 트리거를 작성한다는 것은 무엇을 의미합니까? 더 많은 정보를 제공해주십시오.

+0

일부 개체가 다른 dbs에 있는지 확인하는 응용 프로그램을 만들고 있습니다. 이러한 개체 중 하나가이 트리거입니다. 나는 하나의 코드를 만들 수 있다고 생각했지만, 불가능하다고 생각한다. – user1759320

+1

아니요, 각 DB에는 고유 한 구문이 있습니다. – Diego