怎么在两个表之间建立check约束

Lloyd_Bannings 2011-09-08 09:25:43

create tb a
(
aa char(4) not null,
bb varchar(60) not null,
cc char(10) not null,
dd int not null
)

create tb b
(
aa char(4) not null,
bb varchar(60) not null
)


现在我要a表的aa和bb字段插入的数据与b表中每行都能对上

效果类似在a表中constraint chk check((aa='xx' and bb='xxx') or (aa='yy' and bb='yyy')),我只会这种在a表中的这种check约束写法,如果有更简单的写法请告诉下,我觉得这样写太不效率了就打算建个表进行参照

最好能不用触发器,感觉有的时候sql server的触发器差个数据半天反应不过来
...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lloyd_Bannings 2011-09-08
  • 打赏
  • 举报
回复
我也考虑过设主键,不过实际中的表那两列不能设成主键

晴天强啊,instead of触发器虽然我已经会了,但好佩服你能那么详细的教程,造福我们这些新手啊
晏子 2011-09-08
  • 打赏
  • 举报
回复
表内的约束已经一句话了,还要怎么精简啊
-晴天 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 finix429 的回复:]
那如果在a表内建立check约束有什么简单点的写法么?
[/Quote]

表内的check约束是检查该列与其他列的关系.一般用比较表达式实现.
-晴天 2011-09-08
  • 打赏
  • 举报
回复
表间约束用check不好做,按楼主的要求到是有点类似于外键约束.
可以用INSTEAD OF 触发器来实现,参见:
http://blog.csdn.net/qianjin036a/article/details/6136588
--小F-- 2011-09-08
  • 打赏
  • 举报
回复
既然是这样 可以在A表中设置主键 B表中引用A表的字段为外键 采用级联更新和删除
Lloyd_Bannings 2011-09-08
  • 打赏
  • 举报
回复
那如果在a表内建立check约束有什么简单点的写法么?
晏子 2011-09-08
  • 打赏
  • 举报
回复
check约束不可以引用其他表!
dawugui 2011-09-08
  • 打赏
  • 举报
回复
貌似是用触发器完成,其他不好做.

22,206

社区成员

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

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