不是主键的字段,在两个表中,怎么建立他们的关系?

baisun 2003-09-11 02:44:21
通道表channel
有字段id,channelid,channelname
A表
有字段id,channelid,field1,field2
B表
有字段id,channelid,field3,field4
现在,我想:在A,B建立关系,使得在B中channelid出现的记录值不能是A中channelid的值没有的,就是说B中不能出现A中没有的channelID
怎么弄?
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baisun 2003-09-11
  • 打赏
  • 举报
回复
pengdali(大力 V3.0) 的触发器是对的。
sdhdy(大江东去...) 的最后有点理解不对。
yoki(小马哥) ,你加了又有什么用?
yoki 2003-09-11
  • 打赏
  • 举报
回复
b表加多一列A_ID
依赖于a表ID
baisun 2003-09-11
  • 打赏
  • 举报
回复
不能做唯一索引,因为记录里channelid可以重复的
伍子V5 2003-09-11
  • 打赏
  • 举报
回复
不是说唯一索引就可以见关联么
不过我没有用过
baisun 2003-09-11
  • 打赏
  • 举报
回复
看来必须用触发器了?
触发器效率以及消耗如何?
一次insert数据量大时,触发器能应付自如吗?
sdhdy 2003-09-11
  • 打赏
  • 举报
回复
create trigger tri_insert_B表 on B表
instead of insert
as
if exists(select a.channelid from A表 a,inserted b where a.channelid=b.channelid)
insert B表 select * from inserted
pengdali 2003-09-11
  • 打赏
  • 举报
回复
CREATE TRIGGER 名1 ON B
FOR insert,update
as
if exists(select 1 from inserted where channelid not in (select channelid from a))
rollback tran
baisun 2003-09-11
  • 打赏
  • 举报
回复
CrazyFor(蚂蚁) ,除了触发器。。。
CrazyFor 2003-09-11
  • 打赏
  • 举报
回复
建立触发器.

34,575

社区成员

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

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