2013-01-11 43 views
0

從Sybase遷移到PostgreSQL中,我必須翻譯一些觸發器。在這樣做的時候,我遇到了一些我們在Sybase(T-SQL)中使用的函數的問題,並且在PostgreSQL(PL/pgSQL)中找不到等價物。用於T-SQL函數(Sybase)的等效PL/pgSQL函數(Postgres)

例如,我們使用Sybase下面的語句,我必須找出一種等價的:

  1. select @inscount = count(*) from inserted
  2. select @delcount = count(*) from deleted
  3. @@rowcount(修改的行數)
  4. ROLLBACK TRANSACTION

回答

1

1,2和3在Postgres中不需要如果您使用行級觸發器(Sybase和Microsoft沒有)。

由於觸發器每行調用一次,這些數字基本上總是1

通過記錄變量OLDNEW可以訪問修改或刪除的數據。

更多細節都在手冊中:http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

不能回滾或提交觸發(或功能)裏面的東西 - 這是一個非常可怕的想法呢。所以沒有相當於4)