首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 断言有关问题

2012-12-21 
SQL 断言问题表如下:create table tra(nameID char(5) not null,--人名编号start_time varchar(20),--出差

SQL 断言问题
表如下:


create table tra
(
nameID char(5) not null,--人名编号
start_time varchar(20),--出差开始时间
end_time varchar(20),--出差结束时间
city varchar(20),--出差的城市
primary key(nameID,start_time)
)
/*
nameID   start_time  end_time   city
000012012-09-262012-09-30北京
000012012-10-262012-10-30北京
000022012-10-062012-10-15上海
000022012-10-202012-10-30广州
000032012-10-162012-10-15广州
*/

题目要求:确保出差的每个人每天不可能出现在两个以上城市,用断言设置。
即每个人每天最多只能出现在一个城市。
[解决办法]
primary key(nameID,start_time,city)
[解决办法]
引用:
primary key(nameID,start_time,city)
出差是有一个时间跨度的,单单限制开始时间是不够的。
因为这是一道考试题,但是没有答案,所以我希望能用断言来帮我简答下。
[解决办法]
该回复于2012-11-26 14:28:43被版主删除
[解决办法]
断言?第一次听说呀网上查的语法,但不知道为什么在我的sql2008r2上无法执行 提示语法错误

CREATE assertion  a_test CHECK (
nameID NOT EXISTS (
SELECT nameID FROM tra AS A
WHERE EXISTS(SELECT * FROM tra AS B WHERE B.nameID=A.nameID AND B.city=A.city AND 
DATEDIFF(d,B.start_time,A.start_time)=0 AND DATEDIFF(D,B.end_time,A.end_time)=0 
)
))


仅供参考,等大神们来答疑
[解决办法]
自己顶,坐等大神。
[解决办法]
继续求助。。。
[解决办法]
用触发器吧  ,sqlserver 里没有断言

热点排行