• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

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

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里面写入一记录时,记录已经存在的旧的记录,先删除以前的记录,再写入本次的记录。

可以实现这个触发器吗?如何写呢?
...全文
9 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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里面写入某一记录时,如果当前记录已经存在,先删除当前的记录,再写入。
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-07 03:21
社区公告
暂无公告