Oracle触发器 如何改成 SQL Server 触发器

WangSongYuan 2016-01-11 10:01:27


触发条件怎么改

增、删、改 触发条件sqlserver要创3个吗 ?
after insert
after update
after delete

还有怎么取增、删、改数据的值?
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
l1314j 2016-01-12
  • 打赏
  • 举报
回复

REATE TRIGGER tr
   ON  atd_hr_emp
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
	select * From  inserted	
	select * From  deleted		
END
GO
SQL的触发器,是可以写在一个数据表里面的。但是这样写有一个坏处,就是你不是很方便去判断是新增还是修改、删除。理论上,你做好判断就好了,这里是可以这样写的
吉普赛的歌 版主 2016-01-11
  • 打赏
  • 举报
回复
IF OBJECT_ID('dbo.testT','U') IS NOT NULL
	DROP TABLE dbo.testT
GO
CREATE TABLE dbo.testT
(
	id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	[name] NVARCHAR(20)	NOT NULL
)
GO
CREATE TRIGGER [dbo].[trig_testT_I_D_U]
ON [dbo].testT
AFTER  INSERT, DELETE, UPDATE
AS
BEGIN
	SELECT 'INSERTED' AS FLAG,* FROM INSERTED
	SELECT 'DELETED' AS FLAG,* FROM DELETED
END
GO
INSERT INTO dbo.testT ([name]) VALUES('a')
/*
FLAG	id	name
INSERTED	1	a

FLAG	id	name
*/
INSERT INTO dbo.testT ([name]) VALUES('b')
/*
FLAG	id	name
INSERTED	2	b

FLAG	id	name
*/
UPDATE dbo.testT SET [name]='aa' WHERE id=1
/*
FLAG	id	name
INSERTED	1	aa
FLAG	id	name
DELETED	1	a
*/
DELETE FROM dbo.testT WHERE id=2
/*
FLAG	id	name

FLAG	id	name
DELETED	2	b
*/

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧