社区
疑难问题
帖子详情
数据库唯一与允许空约束怎么解决?
xiaocai0001
2007-07-11 11:11:38
遇到一个问题, 对数据库表中某一列要求允许为空, 若值不空时要求满足唯一约束
不知道这样的约束是数据库层能不能实现?
...全文
687
15
打赏
收藏
数据库唯一与允许空约束怎么解决?
遇到一个问题, 对数据库表中某一列要求允许为空, 若值不空时要求满足唯一约束 不知道这样的约束是数据库层能不能实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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本身不支持,但是可以自己写函数在约束那里实现,我以前写过,很简单的
数据库
SQL基本语句(半天即可学会,轻松简单)
只要你花半天时间,就能轻松掌握SQL基本语句的使用方式,很好的参考资料,主要看文章中的例子,因为例子具有可读连续性,因此,文档描述非常简单,容易掌握,也较通俗易懂!与大家分享!与大家共享!
数据库
-----(主键
约束
、
唯一
约束
、默认
约束
、非
空
约束
、外键
约束
)
文章目录一、数据的完整性二、实体完整性
约束
2.1、主键
约束
(
唯一
、不重复、不能为
空
)(1)建表时直接添加(2)通过ALTER语句(针对已存在的表)(3)删除主键
约束
2.2
唯一
约束
(
唯一
、不重复,可以为
空
)(1)创建表的同时创建
唯一
约束
UN_列名(2)针对已经存在的表,添加
唯一
约束
(30删除
唯一
约束
三、域完整性3.1默认
约束
default(1)创建表的同时创建默认
约束
(2)针对已经存在的表,通过alter语句(3)删除默认
约束
3.2非
空
约束
not null(1)创建表时创建非
空
约束
(2)针对已经存在的表
数据库
中的五种
约束
数据库
中的五种
约束
#五大
约束
1、主键
约束
(Primay Key Coustraint)
唯一
性,非
空
性 2、
唯一
约束
(Unique Counstraint)
唯一
性,可以
空
,但只能有一个 3、检查
约束
(Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等) 4、默认
约束
(Default Counstraint)该数据的默认值 5、外键
约束
...
数据库
设计中的
约束
技巧:主键、外键、
唯一
与检查
约束
在
数据库
设计与开发中,确保数据的准确性、完整性与一致性是至关重要的。为了实现这些目标,
数据库
提供了一系列
约束
(Constraints),这些
约束
通过限制数据的输入、更新与删除操作来维护数据的质量。本文将介绍
数据库
中常见的
约束
类型,包括主键(Primary Key)、外键(Foreign Key)、
唯一
约束
(Unique Constraint)和检查
约束
(Check Constraint),并讨论它们在
数据库
设计中的实际应用。
疑难问题
22,300
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章