关于约束的复杂问题

vivamouse 2008-05-23 12:24:04
小弟这里有个约束条件不知如何写,想请教各位达人指点迷津

具体是这样的:
[no][。。。 ] pk,
[编号] [varchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[到达日期] [smalldatetime] NOT NULL ,
[离开日期] [smalldatetime] NOT NULL ,

我在插入新的记录的时候想检查一下在编号相同的情况下,新的到达和离开的日期,与以前的记录里面同样的编号下的日期不能重叠,请问能不能实现
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivamouse 2008-05-23
  • 打赏
  • 举报
回复
感激不尽~~~
pt1314917 2008-05-23
  • 打赏
  • 举报
回复

--示例:
create table oo(no int,到达日期 datetime,离开日期 datetime)
go

--创建触发器
create trigger tri_a on oo instead of insert
as
insert into oo select * from inserted a
where not exists(select 1 from oo where no=a.no and 到达日期=a.到达日期 and 离开日期=a.离开日期)
go

--测试
insert into oo select 1,'2008-05-23','2008-05-24'
insert into oo select 1,'2008-05-23','2008-05-24'--插入失败
insert into oo select 1,'2008-05-23','2008-05-25'--插入成功
insert into oo select 2,'2008-05-23','2008-05-24'--插入成功

--查看结果
select * from oo

pt1314917 2008-05-23
  • 打赏
  • 举报
回复
这个用约束实现不了
用触发器吧

create trigger tri_a on 表名 instead of insert
as
insert into 表名 select * from inserted a
where not exists(select 1 from 表名 where no=a.no and 到达日期=a.到达日期 and 离开日期=a.离开日期)
liangCK 2008-05-23
  • 打赏
  • 举报
回复
触发器.

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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