社区
疑难问题
帖子详情
数据库唯一与允许空约束怎么解决?
xiaocai0001
2007-07-11 11:11:38
遇到一个问题, 对数据库表中某一列要求允许为空, 若值不空时要求满足唯一约束
不知道这样的约束是数据库层能不能实现?
...全文
663
15
打赏
收藏
数据库唯一与允许空约束怎么解决?
遇到一个问题, 对数据库表中某一列要求允许为空, 若值不空时要求满足唯一约束 不知道这样的约束是数据库层能不能实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
houyichong
2007-07-12
打赏
举报
回复
多加一个相同的列,名字不同,一列用unique,一类允许为null,查询的时候具体情况具体分析就是了
zonelive
2007-07-12
打赏
举报
回复
check (f_a(name)=0 or name is null)
create function dbo.f_a(@name nvarchar(20))
returns tinyint
as
begin
declare @n tinyint
if not exists(select 1 from tbname where name=@name)
set @n=0
else set @n=0 return @n end 大概就这样
jwt1982
2007-07-12
打赏
举报
回复
直接写约束是不能实现地
就1个空显然不符合楼主需要
考虑触发器吧
bitm
2007-07-12
打赏
举报
回复
学习了
ezhuyin
2007-07-12
打赏
举报
回复
表触发,刚才有几个错误。用这个试试看。
CREATE TRIGGER TR_T1_INSERT
ON [dbo].[T1]
FOR INSERT, UPDATE
AS
DECLARE @COLUMN_VALUE varchar(40), @ID bigint -- 假定你的类型是varchar
SET @COLUMN_VALUE = (SELECT C1 FROM inserted) -- 这里设定C1是字段名
SET @ID = (SELECT ID FROM inserted) -- 这里设定你的索引是ID
-- 空值直接返回不做处理
IF @COLUMN_VALUE IS NULL
BEGIN
RETURN
END
-- 非空判断后处理
IF @COLUMN_VALUE LIKE 'ALLOW%'
BEGIN
RETURN -- 满足条件返回
END
ELSE
BEGIN
DELETE FROM T1 WHERE ID=@ID -- 不满足条件删除
END
ezhuyin
2007-07-12
打赏
举报
回复
CREATE TRIGGER TR_T1_INSERT
ON [dbo].[T1]
FOR INSERT, UPDATE
AS
DELCARE @COLUMN_VALUE varchar(40), @ID bigint -- 假定你的类型是varchar
SET @COLUMN_VALUE = (SELECT C1 FROM inserted) -- 这里设定C1是字段名
SET @ID = (SELECT ID FROM inserted) -- 这里设定你的索引是ID
-- 空值直接返回不做处理
IF @C1 IS NULL
BEGIN
RETURN
END
-- 非空判断后处理
IF @C1 LIKE 'ALLOW%'
BEGIN
RETURN -- 满足条件返回
END
ELSE
BEGIN
DELETE FROM T1 WHERE -- 不满足条件删除
ID=@ID
fa_ge
2007-07-11
打赏
举报
回复
這樣的是沒有的吧
fa_ge
2007-07-11
打赏
举报
回复
unique 和 primary key 唯一區別是unique允許為空,primary key 不能為空
xiaocai0001
2007-07-11
打赏
举报
回复
是的Unique约束可以允许为空, 但只能允许一个空值的存在.
我需要的是如果值是null, 不管它, 只有非空时才进行唯一性约束.
fa_ge
2007-07-11
打赏
举报
回复
alter table t
add constraint cons_aa unique (aa)
fa_ge
2007-07-11
打赏
举报
回复
當然可以了
unique 就是了,約束無重復值,但允許為空
xmlquit
2007-07-11
打赏
举报
回复
應該是不可以
ezhuyin
2007-07-11
打赏
举报
回复
用触发表,每次进去数据的时候检查,如果不符合条件直接去除掉。
master_leo
2007-07-11
打赏
举报
回复
学习了
楼主写个函数试试
zonelive
2007-07-11
打赏
举报
回复
SQLSERVER本身不支持,但是可以自己写函数在约束那里实现,我以前写过,很简单的
数据库
-----(主键
约束
、
唯一
约束
、默认
约束
、非
空
约束
、外键
约束
)
文章目录一、数据的完整性二、实体完整性
约束
2.1、主键
约束
(
唯一
、不重复、不能为
空
)(1)建表时直接添加(2)通过ALTER语句(针对已存在的表)(3)删除主键
约束
2.2
唯一
约束
(
唯一
、不重复,可以为
空
)(1)创建表...
数据库
唯一
性
约束
(Unique Constraint)
唯一
性
约束
要求该列
唯一
,
允许
为
空
,但只能出现一个
空
值。
唯一
约束
可以确保一列或者几列不出现重复值。 语法: 1、在定义完列之后直接指定
唯一
约束
字段名 数据类型 UNIQUE 2、在定义完所有列之后指定
唯一
...
唯一
性
约束
[MySQL][
数据库
]
唯一
性
约束
(UNIQUE) ...
唯一
性
约束
允许
列值为
空
允许
加了
唯一
性
约束
的字段的值有多个为null 在创建
唯一
性
约束
的时候,如果没有给
唯一
性
约束
命名,则
唯一
性约名默认和列名相同 MySQL会在加了
唯一
性
约束
的列上默认创建
MySQL基础教程系列-
约束
(三)
唯一
约束
我们经常要使用
唯一
性
约束
来保证我们的数据正确性,例如企业的员工表中,所有人的手机号不可以重复,所有的身份证号不可以重复,这就是
唯一
性
约束
的体现,可以帮我们从
数据库
底层屏蔽很多错误问题,也是我们在设计中...
主键
约束
和
唯一
性
约束
的区别
简单说: ...主键列上没有任何两行具有相同值(即重复值),不
允许
空
(NULL). 主健可作外健,
唯一
索引不可; 2.
唯一
性
约束
(UNIQUE)
唯一
性
约束
用来限制不受主键
约束
的列上的数据的
唯一
性,用...
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章