读书人

自定义函数约束为啥不起作用

发布时间: 2013-01-23 10:44:50 作者: rapoo

自定义函数约束为什么不起作用?
直接上代码
/*CREATE TABLE CheckTbl (col1 int, col2 int);
insert into CheckTbl
values(1,2)
GO
CREATE FUNCTION CheckFnctn()
RETURNS int
AS
BEGIN
DECLARE @retval int
SELECT @retval = COUNT(*) FROM CheckTbl
RETURN @retval
END;
GO
ALTER TABLE CheckTbl
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() >= 1 );
GO
*/
delete from checktbl--根据我的理解这条语句应该执行不成功才对。但是为毛可以执行成功呢?
[解决办法]
约束是针对insert/update的吧,约束改为dbo.CheckFnctn() = 1 将insert不进去。
[解决办法]
删除与check无关.
[解决办法]
2008R2联机丛书(其他版本不清楚)上有这么一句:
执行 DELETE 语句时不验证 CHECK 约束。因此,使用特定类型的 CHECK 约束对表执行 DELETE 语句时可能会产生意外结果

读书人网 >SQL Server

热点推荐