看板 Database 關於我們 聯絡資訊
※ 引述《timmer (.......................)》之銘言: : 資料庫名稱:SQL Server : 資料庫版本:2014 : 內容/問題描述: : table為TABLEA : 資料欄位為COLUMNA 資料型態為int : sqquence為SEQ_COLUMNA : 請問如何在SQL Server中實現如以下oracle的trigger : CREATE OR REPLACE TRIGGER TRIG_INSERT_TABLEA : BEFORE INSERT ON TABLEA FOR EACH ROW : DECLARE : BEGIN : IF :new.COLUMNA > 100 THEN : select SEQ_COLUMNA.nextval into :new.COLUMNA from dual; : END IF; : END; CREATE TRIGGER TRIG_INSERT_TABLEA ON TABLEA INSTEAD OF INSERT AS BEGIN Insert TableA (ColumnA) Select Next Value For SEQ_COLUMNA From inserted i Where i.ColumnA > 100; Insert TableA (ColumnA) Select ColumnA from inserted i Where i.ColumnA <= 100; END 或是 Sequence 設為預設值, 特殊情形再選擇放值進去 USE tempdb go CREATE Sequence dbo.SEQ_COLUMNA Start With 101 As int; go Create Table dbo.TABLEA (ColumnA int Default (Next Value For dbo.SEQ_COLUMNA) Primary Key, DataA varchar(25)); go -- COLUMNA >= 100 Insert dbo.TABLEA (DataA) Values ('A'); -- COLUMNA < 100 Insert dbo.TABLEA (ColumnA, DataA) Values (1, 'B'); go Select * From dbo.TABLEA; go Drop Table dbo.TABLEA; go Drop Sequence dbo.SEQ_COLUMNA; -- https://www.erptech.com.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.2.178 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1567888389.A.9E4.html
timmer: 感謝 09/09 09:25