如何设置有条件的约束

bj_leo_2000 2011-07-02 02:48:45
我想通过约束机制实现在某一条件下约束生效。例如:
create table person
(
id int not null,
status int not null
)
当status为0时保证id唯一没有重复,而status为非0时id可不唯一。
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cd731107 2011-07-02
  • 打赏
  • 举报
回复
--用触发器吧
CREATE TRIGGER [TRIGGER_person] ON [dbo].[person]
FOR INSERT, UPDATE, DELETE
AS
begin
if (select top 1 count(a.id) from person a,inserted b
where a.status=0 and b.status=0 and a.id=b.id
group by a.id order by count(a.id) desc)>1

rollback
end
--小F-- 2011-07-02
  • 打赏
  • 举报
回复
建议放业务层处理.
-晴天 2011-07-02
  • 打赏
  • 举报
回复
这个可以放到业务层去处理,或者用存储过程来插入数据,在存储过程里检查数据.
-晴天 2011-07-02
  • 打赏
  • 举报
回复
不行,不能用check约束,它里面不能加子查询.
bj_leo_2000 2011-07-02
  • 打赏
  • 举报
回复
check约束能约束范围,能约束唯一吗?这块不是很懂
-晴天 2011-07-02
  • 打赏
  • 举报
回复
用check约束.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧