sql server 约束如何处理null
答案:3 悬赏:80
解决时间 2021-02-21 02:55
- 提问者网友:浪女天生ˇ性情薄
- 2021-02-20 16:55
我的基础不好,想问问高手,约束的字段里如果有null值
约束会怎么处理,会报错吗?
如:
check(age smallYear)
year 有null值
age也有null值
最佳答案
- 二级知识专家网友:厭世為王
- 2021-02-20 17:24
约束的字段里如果有null值 约束会忽略数据检查, 下面是一个执行的例子:
E:\>sqlcmd -S "localhost\SQLEXPRESS"
1> use test
2> go
已将数据库上下文更改为 'test'。
1> CREATE TABLE #test(
2> age int,
3> year int,
4> check(age
5> );
6> go
1>
2> INSERT INTO #test VALUES (1,1);
3> go
消息 547,级别 16,状态 1,服务器 TESTPC\SQLEXPRESS,第 2 行
INSERT 语句与 CHECK 约束"CK__#test_____________0425A276"冲突。该冲突发生于数据库
"tempdb",表"dbo.#test__________________________________________________________
_____________________________________________________000000000003"。
语句已终止。
1>
2> INSERT INTO #test VALUES (1,NULL);
3> go
(1 行受影响)
1>
2> INSERT INTO #test VALUES (NULL,1);
3> go
(1 行受影响)
1>
2> INSERT INTO #test VALUES (NULL,NULL);
3> go
(1 行受影响)
1>
全部回答
- 1楼网友:如果这是命
- 2021-02-20 19:17
--添加unique约束
alter table 表名
add constraint 约束名 unique (规格说明)
--删除原来的约束需要知道约束名
--用sp_helpconstraint取得约束名
exec sp_helpconstraint '表名'
执行以后constraint_type列应该有一个是check on column 数量
看看constraint_name是什么,然后用以下语句删除
alter table 表名
drop constraint 约束名
--添加新的check约束
alter table 表名 with nocheck
add constraint 约束名 check(数量 between 1 and 1000)
- 2楼网友:废途浑身病态
- 2021-02-20 18:29
check(isnull(age,0) isnull(smallYear,0))
我要举报
大家都在看
推荐资讯