首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2013-01-23 
自定义函数约束为什么不起作用?直接上代码 /*CREATE TABLE CheckTbl (col1 int, col2 int)insert into Ch

自定义函数约束为什么不起作用?
直接上代码 
/*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 语句时可能会产生意外结果

热点排行