zjcxc(邹建)请进,请教一个触角器问题!!急急

twism 2004-05-05 10:05:28
请教一个问题:
数据库:ggxx,表yd的ID列与bm表的ID列应满足参照完整性规则:向yd表添加一个记录时,该记录的ID值在表bm中应存在.通过一触发器实现
(1)向yd表插入或修改一条记录时,通过触发器检查记录的ID值在bm表中是否存在,若不存在,则取消插入或修改

操作.


如何建立这个触角器?急,帮帮忙
...全文
115 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-05-05
  • 打赏
  • 举报
回复
直接用外键约束更好.
zjcxc 元老 2004-05-05
  • 打赏
  • 举报
回复
create trigger tr_process on yd
for insert,update
as
if exists(select 1 from bm a where not exists(select 1 from inserted where id=a.id))
rollback tran
berylw 2004-05-05
  • 打赏
  • 举报
回复
你看看用这个办法是不是能适合你?

创建存储过程
-------------
create proc prc_insert_ta
@iid varchar(50)
as
if(exists(select iid from tb where iid=@iid))
begin
insert ta values(@iid)
end
-------------

测试--------
------------
create table ta
(
iid varchar(50) primary key
)
create table tb
(
iid varchar(50) primary key
)

insert tb values('a')--------插入TB中数据做测试用
----------------------

执行测试
exec prc_insert_ta 'b'
获得结果
select * from ta
------------
无任何值插入



执行测试
exec prc_insert_ta 'a'
获得结果
select * from ta
------------
a
zheninchangjiang 2004-05-05
  • 打赏
  • 举报
回复
这个可以通过外键约束来实现(如果BM表ID为主键)
alter table yd add constraint fk_bmid foreign key (id) references bm(id)
8992026 2004-05-05
  • 打赏
  • 举报
回复
有没有外键约束?

create trigger tr_yd
on yd
for insert,update
as
if exists (select 1 from inserted i where not exists ( select 1 from bm where id=i.id)

begin
ROLLBACK TRANSACTION
RAISERROR('违反规则',16,1)
return
end

34,838

社区成员

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

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