急問﹕PB及觸發器的問題
各位大蝦﹐我在窗口控件里update一個表時﹐在這個表里寫了觸發器目的是當update,delete,insert時就得update,delete,insert其它的表﹐可當我update窗口里的表時刪除了其它的表里相應的記錄﹐在觸發器里沒有觸發update這個觸發器﹐而是觸發了delete這個觸發器各觸發器代碼如下﹕
CREATE TRIGGER t_update_user ON dbo.c_computer_user
FOR UPDATE
not for replication
AS
set nocount on
declare
@computer_name char(15)
if update(computer_name)
--raiserror('rew',16,1)
-- begin
select @computer_name = computer_name from inserted
if @computer_name <>'' or @computer_name is not null
begin
update c_fitting_dtl set computer_name = @computer_name from c_fitting_dtl a,deleted b where a.computer_name=b.computer_name
update c_software_dtl set computer_name = @computer_name from c_software_dtl a,deleted b where a.computer_name = b.computer_name
update c_internet_url set computer_name = @computer_name from c_internet_url a,deleted b where a.computer_name = b.computer_name
update c_network_dtl set computer_name = @computer_name from c_network_dtl a,deleted b where a.computer_name = b.computer_name
update c_e_mail_apply set computer_name = @computer_name from c_e_mail_apply a,deleted b where a.computer_name = b.computer_name
end
end
set nocount off
/////////////////////////////////////////////////////////////////////////////////////////
CREATE TRIGGER t_delete_user ON dbo.c_computer_user
FOR DELETE
not for replication
AS
set nocount on
declare
@computer_name char(20)
select @computer_name = computer_name from deleted
delete from c_fitting_dtl
where computer_name = @computer_name
delete from c_software_dtl
where computer_name = @computer_name
delete from c_internet_url
where computer_name = @computer_name
delete from c_network_dtl
where computer_name = @computer_name
delete from c_e_mail_apply
where computer_name = @computer_name
set nocount off
///////////////////////////////////////////////////////////////////////////////////
CREATE TRIGGER t_insert_user ON dbo.c_computer_user
FOR insert
not for replication
AS
set nocount on
declare @error varchar(400),
@row int,
@computer_name varchar(20),
@user varchar(15),
@seq_no int,
@seq int
select @row = count(*) from c_software_install_level
select @computer_name = computer_name from inserted
select @user = create_user from inserted
if @row <=0
begin
set @error = 'Please input software install level'
raiserror(@error,16,1)
return
end
else
begin
if @computer_name is not null or @computer_name <> ''
begin
insert into c_software_dtl (computer_name,software_id,create_user,create_date,update_user,update_date,standard,install_date)
select @computer_name,software_id,@user,getdate(),@user,getdate(),'Y',getdate() from c_software_install_level
insert into c_network_dtl(computer_name,create_user,create_date,update_user,update_date)
select inserted.computer_name,inserted.create_user,inserted.create_date,inserted.update_user,inserted.update_date from inserted
end
end
set nocount off
我把insert 和delete 這倆個觸發器隱掉﹐update窗口里dw的表時不觸發update這個觸發器,我在update觸發器里也有raiserror('rew',16,1)調試了就是不觸發update這個觸發器﹐
我釋放insert和delete 觸發器﹐當update窗口里dw的表時觸發的是insert和delete觸發﹐后來我把dw里的表刪除﹐重建該表﹐為該表重建觸發器還是不行。
急呀﹐各位仁哥和美M幫幫忙煩看一下﹐謝謝