可以实现这样的触发器吗?

friendwei 2003-05-07 03:21:24
表1 kmain.dbo.kclient 其中主键 kcode
表2 kmain.dbo.kclient_tc 主键 client_bh

目的: 1,当往kclient里面写入一记录时,就删除kclient_tc 中 client_bh=kcode的 记录
2,假设在往kclient里面写入一记录时,记录已经存在的旧的记录,先删除以前的记录,再写入本次的记录。

可以实现这个触发器吗?如何写呢?
...全文
42 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xZJJ 2003-05-09
  • 打赏
  • 举报
回复
学习!
erigido 2003-05-08
  • 打赏
  • 举报
回复
学习
friendwei 2003-05-08
  • 打赏
  • 举报
回复
高手再来看看啦
friendwei 2003-05-08
  • 打赏
  • 举报
回复
实在不能去掉 image ,没有其它的办法了吗?
friendwei 2003-05-07
  • 打赏
  • 举报
回复
已经没有了,但有image列,这个是不能改的呀!不好办了哦!

有其它的办法吗????
pengdali 2003-05-07
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_kclient_ins ON [dbo].[kclient ]
INSTEAD OF INSERT
AS
delete kclient_tc where client_bh in(select kcode from inserted)

delete kclient where kcode _bh in (select kcode from inserted)
insert kclient select * from inserted

---你的表里有text列吗?
chenlishu413 2003-05-07
  • 打赏
  • 举报
回复
create trigger mytrigger on [dbo].[kclient]
for insert,update
as
-----判斷記錄是否存在,如果存在則刪除.再插入否則只須做插入動作便可.
if exists(select * from kclient_tc where client_bh in(select kcode form inserted))
begin
delete kclient_tc where client_bh in(select kcode from inserted)
insert into kclient values(有幾個字段就多少個值)
end
else
begin
insert into kclient values(有幾個字段就多少個值)
end
試一試吧希望能幫上你的忙.

friendwei 2003-05-07
  • 打赏
  • 举报
回复
delete from kclient_tc where client_bh in(select kcode from inserted)
是可以删除 kclient_tc 中的记录了
但是如何删除在 insert 前已经存在的记录了呢 ?????????
jeansure 2003-05-07
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_kclient_ins ON [dbo].[kclient ]
FOR INSERT
AS
declare @kcode as string
select @kcode=kcode from inserted
delete from kclient_tc where client_bh =@kcode
chenlishu413 2003-05-07
  • 打赏
  • 举报
回复
CREATE TRIGGER mytrigger ON [dbo].[KCLIENT]
FOR INSERT,UPDATE
AS
IF EXISTS(SELECT * FROM KCLIENT_TC WHERE CLIENT_BH IN(SELECT KCODE FROM INSERTED))
DELETE KCLIENT_TC WHERE CLIENT_BH IN(SELECT KCODE FROM INSERDED)

放分吧!
mjhnet 2003-05-07
  • 打赏
  • 举报
回复
不是必须的话,请把text类型字段改成varchar(100)之类的类型

不然就无法使用触发器来完成这个功能了
friendwei 2003-05-07
  • 打赏
  • 举报
回复
to caiyunxia(monkey)
试了一下:
提示:
不能在 inserted 表和 deleted 表中使用text,... 或 image
chenlishu413 2003-05-07
  • 打赏
  • 举报
回复

create trigger mytrigger on kclient for
insert,update
as
if exists(select * from kmain.kclient_tc where kmain.kclient_tc.client_bh=kmain.kclient.kcode)
delete kmain.kclient_tc where kmain.client_tc.client_bh=kmain.kclient.kcode

試一試吧.我晚上再幫你做測試

caiyunxia 2003-05-07
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_kclient_ins ON [dbo].[kclient ]
FOR INSERT
AS
delete from kclient_tc where client_bh in(select kcode from inserted)
delete from kclient where kcode _bh in(select kcode from inserted)
insert into kclient
select * from inserted
friendwei 2003-05-07
  • 打赏
  • 举报
回复
写的不清楚,更正:
2,假设在往kclient里面写入某一记录时,如果当前记录已经存在,先删除当前的记录,再写入。

34,587

社区成员

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

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