CREATE TRIGGER RICheck ON Tour
AFTER INSERT, UPDATE
AS
SET NoCount ON
IF Exists(SELECT *
FROM Inserted
LEFT OUTER JOIN BaseCamp
ON Inserted.BaseCampID
= BaseCamp.BaseCampID
WHERE BaseCamp.BaseCampID IS NULL)
BEGIN
RAISERROR
('Inappropriate Foreign Key: Tour.BaseCampID', 16, 1)
ROLLBACK TRANSACTION
RETURN
END我的理解是 存在符合要求的数据则回滚,不存在则执行,为什么实际执行效果和我的想法是反的呢?
解决方案 »
- DataGridView使用
- 请教一个MSSQL格式化日期字段问题
- vb连sql server2005的问题,救命呀
- 如何用触发器实现回滚?
- 动态SQL中日期比较
- mssql2008偶尔出现login failed for user '' 错误:18456 严重性:14 状态:58.
- 怎么样获得 SQL SERVRE 中 DateTime 类型字段的日期部分?
- ===问个关于数据库安全方面的问题,数据库高手们请进
- 大力:导出到Excel的存储过程,出现"查询提示超过了最大目录缓冲区 1023 字节(1246字节输入)" 如何解决?
- 高分征求算法!!!!!!
- android的内置SQLite数据库在哪个文件夹下?
- 远程连接问题,紧急。
FROM Inserted
LEFT OUTER JOIN BaseCamp
ON Inserted.BaseCampID
= BaseCamp.BaseCampID
WHERE BaseCamp.BaseCampID IS NULL语句,只要Inserted 中有数据而BaseCamp中不存在都会成立,这样的话就是True了,我不知道你想实现什么功能!如果要实现只要BaseCamp中存在就回滚的话你可以改成SELECT * FROM BaseCamp As T Where T.BaseCampID = BaseCampID试试
IF Exists(SELECT *
FROM Inserted where BaseCampID not in
(select BaseCampID from BaseCamp))