触发器执行操作时如何判断字段的内容满足要求后再执行(insert)

baogong 2003-09-13 12:47:15
如题。

插入时调用触发器,但我需要对插入字段的内容进行判断,以确定是否进行插入操作。
...全文
311 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-09-13
  • 打赏
  • 举报
回复
use a INSTEAD OF INSERT trigger

CREATE TRIGGER InsteadTrigger on YourTable
INSTEAD OF INSERT
AS
BEGIN
--check the data in inserted table
if .....
INSERT INTO YourTable
SELECT Col1, Col2,...
FROM inserted
END
GO
zjcxc 元老 2003-09-13
  • 打赏
  • 举报
回复
新插入的数据全部放在inserted表中,通过读取inserted表的内容可以判断内容是否合法:

例子:
create trigger t_名称 on 表名
for insert
as
if exists(select 1 from inserted where 处理日期>getdate())
rollback tran --如果处理日期比当日还大,证明有问题,直接回滚.
go
yujohny 2003-09-13
  • 打赏
  • 举报
回复
用inserted表,就是你刚插入的数据
然后用INSTEAD OF 触发器
happydreamer 2003-09-13
  • 打赏
  • 举报
回复
查询inserted表 可以得到刚刚插入的内容

CREATE TRIGGER InsteadTrigger on YourTable
INSTEAD OF INSERT
AS
if exists (select 1 from inserted where ....)
begin
INSERT INTO YourTable
SELECT Col1, Col2,...
FROM inserted
end
GO
yoki 2003-09-13
  • 打赏
  • 举报
回复
刚刚插入的数据的内容存在Inserted表中
你可以当作普通表一样来判断里面的内容
cgsun 2003-09-13
  • 打赏
  • 举报
回复
使用 inserted 和 deleted 表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Microsoft® SQL Server™ 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。

inserted 和 deleted 表主要用于触发器中:

扩展表间引用完整性。


在以视图为基础的基表中插入或更新数据。


检查错误并基于错误采取行动。


找到数据修改前后表状态的差异,并基于此差异采取行动。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。

在设置触发器条件时,应当为引发触发器的操作恰当使用 inserted 和 deleted 表。虽然在测试 INSERT 时引用 deleted 表或在测试 DELETE 时引用 inserted 表不会引起任何错误,但是在这种情形下这些触发器测试表中不会包含任何行。



说明 如果触发器操作取决于一个数据修改所影响的行数,应该为多行数据修改(基于 SELECT 语句的 INSERT、DELETE 或 UPDATE)使用测试(如检查 @@ROWCOUNT),然后采取相应的对策。


SQL Server™ 2000 不允许 AFTER 触发器引用 inserted 和 deleted 表中的 text、ntext 或 image 列;然而,允许 INSTEAD OF 触发器引用这些列。有关更多信息,请参见 CREATE TRIGGER。
baogong 2003-09-13
  • 打赏
  • 举报
回复
但是我如何判断刚刚插入的数据的内容呢?在触发器里。多谢思归老大。

34,587

社区成员

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

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