Re: [SQL ] 請問如何將orale的trigger和sequence放到sqlserver上
※ 引述《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
推
09/09 09:25,
5年前
, 1F
09/09 09:25, 1F
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章