作者konkonchou (易而普科技)
看板Database
标题Re: [SQL ] 请问如何将orale的trigger和sequence放到sqlserver上
时间Sun Sep 8 04:33:05 2019
※ 引述《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://webptt.com/cn.aspx?n=bbs/Database/M.1567888389.A.9E4.html
1F:推 timmer: 感谢 09/09 09:25