社区
疑难问题
帖子详情
数据库唯一与允许空约束怎么解决?
xiaocai0001
2007-07-11 11:11:38
遇到一个问题, 对数据库表中某一列要求允许为空, 若值不空时要求满足唯一约束
不知道这样的约束是数据库层能不能实现?
...全文
730
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本身不支持,但是可以自己写函数在约束那里实现,我以前写过,很简单的
2023年零基础都能看懂的
数据库
约束
通俗易懂的理解
文章介绍了
数据库
约束
的基本概念,包括主键
约束
、
唯一
约束
、检查
约束
和默认
约束
,通过实例说明了它们在数据规范中的作用。主键
约束
确保数据的
唯一
性且不
允许
为
空
,而
唯一
约束
同样保证
唯一
但可为
空
。文章还探讨了如何使用
约束
解决
性别、学号、手机号和地址等字段的数据规范问题。
MySQL
约束
:主键、非
空
、
唯一
、外键 ️
本文深入解析MySQL中的主键、非
空
、
唯一
与外键
约束
,通过实例演示如何增强
数据库
完整性和数据一致性。
约束
,MySQL
约束
,非
空
默认值,主键外键
唯一
自增,完整详细可收藏
本文详细介绍了
数据库
中的数据
约束
,包括非
空
约束
、
唯一
约束
、主键
约束
(包含自增属性)、外键
约束
以及默认值
约束
。非
空
约束
确保字段不为
空
,
唯一
约束
保证字段值的
唯一
性,主键
约束
结合了非
空
和
唯一
,同时提供索引。外键
约束
维护了引用完整性,而默认值
约束
为字段提供默认填充值。在面试中,这些
约束
的概念和作用常被问及,对于数据完整性和系统性能有着重要影响。
数据库
-----(主键
约束
、
唯一
约束
、默认
约束
、非
空
约束
、外键
约束
)
本文详细介绍了
数据库
中的数据完整性
约束
,包括实体完整性
约束
如主键、
唯一
约束
(
允许
为
空
)、默认
约束
和非
空
约束
。此外,还讨论了参照完整性的外键
约束
,阐述了如何在创建表时和已存在表上添加、修改和删除这些
约束
。
数据库
约束
数据库
约束
是关系型
数据库
的重要功能,用于保证数据有效性。常见
约束
类型有非
空
、默认、
唯一
、主键和外键
约束
。非
空
约束
使列不为
空
,默认
约束
可插入默认值,
唯一
约束
确保列值
唯一
,主键
约束
要求
唯一
且非
空
,外键
约束
定义主从表关系,使用时需注意数据一致性。
疑难问题
22,296
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章