CREATE TRIGGER [a] ON [cbjbxx]
FOR insert
AS
if (select cjgdm from inserted)=
(select cjgdm from cjgdmb)
insert into cbxx(zwcm,cjgmc)
select a.zwcm,b.cjgmc from cbjbxx a,cjgbmb b where a.cjgdm=b.cjgbm
FOR insert
AS
if (select cjgdm from inserted)=
(select cjgdm from cjgdmb)
insert into cbxx(zwcm,cjgmc)
select a.zwcm,b.cjgmc from cbjbxx a,cjgbmb b where a.cjgdm=b.cjgbm
CREATE TRIGGER [a] ON [cbjbxx]
FOR insert
AS
insert into cbxx(zwcm,cjgmc)
select inserted.zwcm,cjgdmb.cjgmc
from inserted
left join cjgdmb on inserted.cjgdm =cjgdmb.cjgdm
CREATE TRIGGER [a] ON [cbjbxx]
FOR insert
AS
begin
insert into cbxx(zwcm,cjgmc) select inserted.zwcm,cjgdmb.cjgmc from inserted inner join cjgdmb on inserted.cjgdm=cjgdmb.cjgdm
end
然后本版我的問題下面有個鏈接提問..
我的用意并不是简单地连接两张表,而是当Table1新增一条记录时,将Table1中的此条记录的cjgdm字段的值根据table2,换算得cjgmc,而后,将此记录放到Table3中。(即对新增记录的代码字段的值换成名称。)
我写的Trigger如下:
CREATE TRIGGER [Tri_cbjbxx_Ins] ON [cbdj]
FOR INSERT
ASDECLARE @zwcm varchar(20),
@cjgdm varchar(4),
@cjgmc varchar(12)DECLARE cbjbxx_ins CURSOR
FOR
SELECT i.zwcm,i.cjgdm
from inserted i open cbjbxx_ins
fetch next from cbdj_ins into @zwcm,@cjgdm
--
-- @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
-- 上面这句话的语法肯定是错误的。只想表示一下我的用意,
-- 用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
-- 最后将它发给存储过程来处理。
--
while(@@fetch_status<>-1)
begin
EXEC share..pro_cbjbxx_ins @zwcm,@cjgmc
fetch next from cbjbxx_ins into @zwcm,@cjgmc
end close cbjbxx_ins
deallocate cbjbxx_insRETURN
CREATE PROCEDURE [dbo].[pro_cbjbxx_ins](
@zwcm varchar(20),
@cjgmc varchar(12),
) AS select zwcm from cbxxwhere zwcm=@zwcmif @@rowcount=0
insert cbxx(zwcm,cjgmc)values(@zwcm,@cjgmc)
else
update cbxx
set cjgmc=@cjgmc
where zwcm=@zwcm
GO
不知道能不能满足你的需求
CREATE TRIGGER [table1_insert] ON [table1]
FOR INSERT
ASinsert table3(zwcm,cjgmc) (select a.zwcm,b.cjgmc from inserted a,table2 where a.cjgdm=b.cjgdm)
不知道能不能满足你的需求
CREATE TRIGGER [table1_insert] ON [table1]
FOR INSERT
ASinsert table3(zwcm,cjgmc) (select a.zwcm,b.cjgmc from inserted a,table2 b where a.cjgdm=b.cjgdm)
我的用意并不是简单地连接两张表,而是当Table1新增一条记录时,将Table1中的此条记录的cjgdm字段的值根据table2,换算得cjgmc,而后,将此记录放到Table3中。(即对新增记录的代码字段的值换成名称。)
我写的Trigger如下:
CREATE TRIGGER [Tri_cbjbxx_Ins] ON [cbdj]
FOR INSERT
ASDECLARE @zwcm varchar(20),
@cjgdm varchar(4),
@cjgmc varchar(12)DECLARE cbjbxx_ins CURSOR
FOR
SELECT i.zwcm,i.cjgdm
from inserted i open cbjbxx_ins
fetch next from cbdj_ins into @zwcm,@cjgdm
--
-- @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
-- 上面这句话的语法肯定是错误的。只想表示一下我的用意,
-- 用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
-- 最后将它发给存储过程来处理。
--
while(@@fetch_status<>-1)
begin
EXEC share..pro_cbjbxx_ins @zwcm,@cjgmc
fetch next from cbjbxx_ins into @zwcm,@cjgmc
end close cbjbxx_ins
deallocate cbjbxx_insRETURN
CREATE PROCEDURE [dbo].[pro_cbjbxx_ins](
@zwcm varchar(20),
@cjgmc varchar(12),
) AS select zwcm from cbxxwhere zwcm=@zwcmif @@rowcount=0
insert cbxx(zwcm,cjgmc)values(@zwcm,@cjgmc)
else
update cbxx
set cjgmc=@cjgmc
where zwcm=@zwcm
GO
谢谢,老冯,但是要实现我要的功能,如果修改我写的这段代码呢?
-- @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
-- 上面这句话的语法肯定是错误的。只想表示一下我的用意,
-- 用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
-- 最后将它发给存储过程来处理。
--
改为:
select @cjgmc=cjgmc from cjgdmb where cjgdm=@cjgdm
就可以了。