用T-SQL设计一个插入触发器,在触发器中设定条件,当没有满足该条件后,回滚该插入操作,并提示错误。

来源:百度知道 编辑:UC知道 时间:2024/06/16 13:13:32
请问回滚该插入操作,并提示错误。是什么意思,都已经插入了,怎么在发现错误的情况下回滚呢?插入在什么样的情况下又会出错呢?

你的意思是说在触发器外面进行插入操作,这个插入操作引发触发器,发现插入不符合规则,然后回滚是吗?
因为我学的数据库比较浅显,这个RAISERROR 函数是干什么用的呢?麻烦你了哦,谢谢~~

如果你插入的数据不符合业务规则 ,这个时候就要回滚你的插入操作,业务规则在触发器中定义,也就是一个判断语句,回滚操作用ROLLBACK TRANSACTION 语句就可以,同时可以定义错误提示信息,下面这个列子你可以看看:

CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
DECLARE @min_lvl tinyint,
@max_lvl tinyint,
@emp_lvl tinyint,
@job_id smallint
SELECT @min_lvl = min_lvl,
@max_lvl = max_lvl,
@emp_lvl = i.job_lvl,
@job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
ROLLBACK TRANSACTION
--不符合业务规则,回滚,并输出错误信息
END
ELSE

IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
RAISERROR ('The level for job_id:%d should be between %d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
--不符合业务规则