Sql server 获取错误而不是触发器不支持直接递归?

Sql server 获取错误而不是触发器不支持直接递归?,sql-server,triggers,Sql Server,Triggers,我需要编写一个删除触发器,在删除供应商之前,它将检查其他数据库表上是否存在关系,如果在其他数据库表上找不到关系,则向管理员发送电子邮件,并设置delete flag=1,不删除记录,然后下次为同一供应商发出delete命令时,它将检查标志并删除该记录 create TRIGGER [dbo].[trgInsteadOfDelete] ON [dbo].[AP_Vendor] INSTEAD OF DELETE AS declare @apdivisionno varchar(2);

我需要编写一个删除触发器,在删除供应商之前,它将检查其他数据库表上是否存在关系,如果在其他数据库表上找不到关系,则向管理员发送电子邮件,并设置delete flag=1,不删除记录,然后下次为同一供应商发出delete命令时,它将检查标志并删除该记录

create TRIGGER [dbo].[trgInsteadOfDelete] ON [dbo].[AP_Vendor] 
INSTEAD OF DELETE
AS
    declare @apdivisionno varchar(2);
    declare @vendorno varchar(7);
    declare @vendorname varchar(30);
    declare @addressline1 varchar(30);
    declare @addressline2 varchar(30);
    declare @addressline3 varchar(30);
    declare @city varchar(20);
    declare @state varchar(2);
    declare @zipcode varchar(10);
    declare @countrycode varchar(3);

    declare @primarycontact varchar(10);
    declare @telephoneno varchar(17);
    declare @telephoneext varchar(5);
    declare @faxno varchar(17);
    declare @emailaddress varchar(250);
    declare @urladdress varchar(50);
    declare @termscode varchar(2);
    declare @reference varchar(15);
    declare @temporyvendor varchar(1);
    declare @creditcardvendor varchar(1);

    declare @holdpayment varchar(1);
    declare @electronicpayment varchar(1);
    declare @standardentryclass varchar(3);
    declare @exemptionnoOnFile varchar(1);
    declare @taxschedule varchar(9);
    declare @taxclass varchar(2);
    declare @accountkey varchar(9);
    declare @SeparateCheck varchar(1);
    declare @Comment varchar(30);
    declare @Sort varchar(10);

    declare @batchfax varchar(1);
    declare @UsePOReceiptOfInvForVendor varchar(1);
    declare @PrimaryPurchaseAddressCode varchar(4);
    declare @VendorType varchar(1);
    declare @Form1099 varchar(1);
    declare @TaxpayerIDSocialSecurityNo varchar(9);
    declare @Box1099 varchar(3);
    declare @MiscBox9 varchar(1);
    declare @LastPurchaseDate datetime;
    declare @LastPaymentDate datetime;

    declare @LastCheckNo varchar(10);
    declare @LastCheckAmt decimal(14, 2);
    declare @RetentionRate decimal(6, 2);
    declare @AverageDaysToPay decimal(3, 0);
    declare @AverageDaysOverDue decimal(3, 0);
    declare @balancedue decimal(15, 2);
    declare @NumberOfInvToUseInCalc decimal(7, 2);
    declare @datecreated datetime;
    declare @timecreated varchar(8);
    declare @UserCreatedKey varchar(10);

    declare @dateupdated datetime;
    declare @timeupdated varchar(8);
    declare @UserUpdatedKey varchar(10);
    declare @UDF_LONG_NAME varchar(60);

    declare @audit_Event varchar(10);
    declare @audit_log varchar(100);
    declare @dbname varchar(50);

    declare @Deletedbname varchar(50);

    declare @rowcount int;
    declare @TableName varchar(50);
    declare @TableFieldName varchar(50);

    declare @dbcounter int;
    declare @tablecounter int;
    declare @cnt INT ;
    DECLARE @selectVendorno varchar(75)

    select @apdivisionno =i.APDivisionNo from deleted i;    
    select @vendorno=i.VendorNo from deleted i; 
    select @vendorname=i.VendorName from deleted i;
    select @addressline1 =i.AddressLine1 from deleted i;    
    select @addressline2=i.AddressLine2 from deleted i; 
    select @addressline3=i.AddressLine3 from deleted i; 
    select @city =i.City from deleted i;    
    select @state=i.state from deleted i;   
    select @zipcode=i.zipcode from deleted i;   
    select @countrycode =i.countrycode from deleted i;  
    select @primarycontact=i.PrimaryContact from deleted i; 
    select @telephoneno=i.TelephoneNo from deleted i;   
    select @telephoneext =i.telephoneext from deleted i;    
    select @faxno=i.faxno from deleted i;   
    select @emailaddress=i.emailaddress from deleted i; 
    select @urladdress =i.urladdress from deleted i;    
    select @termscode=i.termscode from deleted i;   
    select @temporyvendor=i.TemporaryVendor from deleted i; 
    select @creditcardvendor =i.CreditCardVendor from deleted i;    
    select @holdpayment=i.holdpayment from deleted i;   
    select @electronicpayment=i.ElectronicPayment from deleted i;   
    select @standardentryclass=i.StandardEntryClass from deleted i; 
    select @exemptionnoOnFile=i.ExemptionNoOnFile from deleted i;   
    select @taxschedule=i.taxschedule from deleted i;   
    select @taxclass=i.taxclass from deleted i; 
    select @accountkey=i.accountkey from deleted i; 
    select @SeparateCheck=i.SeparateCheck from deleted i;   
    select @Comment=i.Comment from deleted i;   
    select @Sort=i.Sort from deleted i; 
    select @batchfax=i.batchfax from deleted i; 
    select @UsePOReceiptOfInvForVendor=i.UsePOReceiptOfInvForVendor from deleted i; 
    select @PrimaryPurchaseAddressCode=i.PrimaryPurchaseAddressCode from deleted i; 
    select @VendorType=i.VendorType from deleted i; 
    select @Form1099=i.Form1099 from deleted i;
    select @TaxpayerIDSocialSecurityNo=i.TaxpayerIDSocialSecurityNo from deleted i; 
    select @Box1099=i.Box1099 from deleted i;   
    select @MiscBox9=i.MiscBox9 from deleted i;
    select @LastPurchaseDate=i.LastPurchaseDate from deleted i; 
    select @LastPaymentDate=i.LastPaymentDate from deleted i;   
    select @LastCheckNo=i.LastCheckNo from deleted i;
    select @LastCheckAmt=i.LastCheckAmt from deleted i;
    select @RetentionRate=i.RetentionRate from deleted i;
    select @AverageDaysToPay=i.AverageDaysToPay from deleted i;
    select @AverageDaysOverDue=i.AverageDaysOverDue from deleted i;
    select @balancedue=i.balancedue from deleted i;
    select @NumberOfInvToUseInCalc=i.NumberOfInvToUseInCalc from deleted i;
    select @datecreated=i.datecreated from deleted i;
    select @timecreated=i.timecreated from deleted i;
    select @UserCreatedKey=i.UserCreatedKey from deleted i;
    select @dateupdated=i.dateupdated from deleted i;
    select @timeupdated=i.timeupdated from deleted i;
    select @UserUpdatedKey=i.UserUpdatedKey from deleted i;
    select @UDF_LONG_NAME=i.UDF_LONG_NAME from deleted i;
    select @Deletedbname= DB_NAME();

    set  @dbcounter =0;
    set  @tablecounter =0;

    DECLARE @sql NVARCHAR(MAX) 
    DECLARE @deleteSql NVARCHAR(MAX) 

    select @rowcount=count(*) from [Mas_Master].[dbo].[Master_Vendor] where vendorno=@vendorno and deleteflag=1;



    BEGIN
        if(@rowcount<=0) 
        begin

                DECLARE db_cursor CURSOR FOR  
                SELECT [dbname] FROM [Mas_Master].[dbo].[lookup_dbName]

                OPEN db_cursor   
                FETCH NEXT FROM db_cursor INTO @dbname 

                WHILE @@FETCH_STATUS = 0   
                BEGIN   

                           DECLARE Table_cursor CURSOR FOR  
                           SELECT [TableName],[TableFieldName] FROM [Mas_Master].[dbo].[lookupTableName]
                           OPEN Table_cursor   
                           FETCH NEXT FROM Table_cursor INTO @TableName,@TableFieldName 

                           WHILE @@FETCH_STATUS = 0  
                           BEGIN   


                                if(CONCAT(@dbname, '_', @TableName)<>CONCAT(@Deletedbname, '_', 'AP_VENDOR'))  /*Not Check For Same Database */
                                 Begin

                                    set @sql='Select  @cnt=count(*) from ' +@dbname+'.dbo.'+@TableName +' where '+ @TableFieldName +'= ''' + @vendorno + '''';
                                    EXECUTE sp_executesql @sql, N' @cnt int out', @cnt OUTPUT

                                    INSERT INTO Mas_master.dbo.testDelete
                                            VALUES
                                           (
                                           @dbname
                                           ,@TableName
                                           ,@vendorno,@sql,@cnt
                                           )

                                        if(@cnt>0)
                                        Begin
                                            SET @tablecounter = @tablecounter + 1;
                                            break;  
                                        end
                                 End



                                FETCH NEXT FROM Table_cursor INTO @TableName,@TableFieldName 
                           End
                           CLOSE Table_cursor;
                           DEALLOCATE Table_cursor;
                 SET @dbcounter = @dbcounter + 1;
                 FETCH NEXT FROM db_cursor INTO @dbname   
                END 
             CLOSE db_cursor;
            DEALLOCATE db_cursor;
                /* if no match vendor found on other database then mark master table vendor delete*/
                if(@tablecounter=0)
                begin
                       UPDATE [Mas_Master].[dbo].[Master_Vendor]
                         SET [DeleteFlag] = 1
                        where vendorno=@vendorno
                End

        end
        else /* if delete Flag = 1 then delete vendor from current database table and master vendor table */
        Begin
              set @deleteSql= 'DELETE FROM '+@Deletedbname+'.dbo.AP_Vendor WHERE vendorno=@vendorno';
              EXECUTE sp_executesql @deleteSql, N'@vendorno nvarchar(75)', @vendorno = @vendorno
              DELETE FROM Mas_Master.dbo.Master_Vendor WHERE vendorno=@vendorno
        End
    End 
在[dbo].[AP\u供应商]上创建触发器[dbo].[trgInsteadOfDelete]
而不是删除
作为
声明@apdivisiono varchar(2);
声明@vendorno varchar(7);
声明@vendorname varchar(30);
声明@addressline1 varchar(30);
声明@addressline2 varchar(30);
声明@addressline3 varchar(30);
宣布@city varchar(20);
声明@state varchar(2);
声明@zipcodevarchar(10);
声明@countrycode varchar(3);
声明@primarycontact varchar(10);
声明@telephoneno varchar(17);
声明@telephoneext varchar(5);
声明@faxno varchar(17);
声明@emailaddress varchar(250);
声明@URLADDESS varchar(50);
声明@termscode varchar(2);
声明@reference varchar(15);
声明@temporyvendor varchar(1);
声明@creditcardvendor varchar(1);
声明@holdpayment varchar(1);
声明@electronicpayment varchar(1);
声明@standardentryclass varchar(3);
声明@ExcemptionNoonfile varchar(1);
声明@taxschedule varchar(9);
声明@taxclass varchar(2);
声明@accountkey varchar(9);
声明@SeparateCheck varchar(1);
声明@Comment varchar(30);
声明@Sort varchar(10);
声明@batchfax varchar(1);
声明@UsePOReceiptOfInvForVendor varchar(1);
声明@PrimaryPurchaseAddressCode varchar(4);
声明@VendorType varchar(1);
声明@Form1099 varchar(1);
声明@TaxpayerIDSocialSecurityNo varchar(9);
声明@Box1099 varchar(3);
声明@MiscBox9 varchar(1);
声明@LastPurchaseDate-datetime;
声明@lastpaymentdatetime;
声明@LastCheckNo varchar(10);
声明@LastCheckAmt十进制数(14,2);
声明保留小数(6,2);
声明@AverageDaysToPay十进制(3,0);
声明@AverageDaysOverDue十进制(3,0);
声明@balancedue十进制(15,2);
声明@NumberOfInvToUseInCalc十进制(7,2);
声明@datecreated-datetime;
声明@timecreated varchar(8);
声明@UserCreatedKey varchar(10);
声明@dateupdated datetime;
声明@timeupdated varchar(8);
声明@UserUpdatedKey varchar(10);
声明@UDF_LONG_NAME varchar(60);
声明@audit_Event varchar(10);
声明@audit_log varchar(100);
声明@dbname varchar(50);
声明@Deletedbname varchar(50);
声明@rowcountint;
声明@TableName varchar(50);
声明@TableFieldName varchar(50);
声明@dbcounter int;
声明@tablecounter int;
声明@cnt INT;
声明@selectVendorno varchar(75)
从删除的i中选择@apdivisionno=i.apdivisionno;
从已删除的i中选择@vendorno=i.vendorno;
从已删除的i中选择@vendorname=i.vendorname;
从已删除的i中选择@addressline1=i.addressline1;
从已删除的i中选择@addressline2=i.addressline2;
从已删除的i中选择@addressline3=i.addressline3;
从删除的i中选择@city=i.city;
从已删除的i中选择@state=i.state;
从已删除的i中选择@zipcode=i.zipcode;
从已删除的i中选择@countrycode=i.countrycode;
选择@primarycontact=i.primarycontact from deleted i;
从已删除的i中选择@telephoneno=i.telephoneno;
从已删除的i中选择@telephoneext=i.telephoneext;
从已删除的i中选择@faxno=i.faxno;
选择@emailaddress=i.emailaddress from deleted i;
从已删除的i中选择@urladdress=i.urladdress;
从已删除的i中选择@termscode=i.termscode;
选择@TemporaryVendor=i.TemporaryVendor从已删除的i;
从已删除的i中选择@creditcardvendor=i.creditcardvendor;
选择@holdpayment=i.holdpayment from deleted i;
选择@electronicpayment=i.已删除i中的electronicpayment;
从删除的i中选择@standardentryclass=i.standardentryclass;
选择@ExcemptionNoonFile=i.ExcemptionNoonFile from deleted i;
选择@taxschedule=i.taxschedule from deleted i;
从已删除的i中选择@taxclass=i.taxclass;
从已删除的i中选择@accountkey=i.accountkey;
从已删除的i中选择@SeparateCheck=i.SeparateCheck;
选择@Comment=i.Comment from deleted i;
选择@Sort=i.Sort from deleted i;
选择@batchfax=i.batchfax from deleted i;
从已删除的i中选择@UsePoreciptoFinvForVendor=i.UsePoreciptoFinvForVendor;
选择@PrimaryPurchaseAddressCode=i.PrimaryPurchaseAddressCode从已删除的i;
从已删除的i中选择@VendorType=i.VendorType;
从已删除的i中选择@Form1099=i.Form1099;
从已删除的i中选择@TaxpayerIDSocialSecurityNo=i.TaxpayerIDSocialSecurityNo;
从已删除的i中选择@Box1099=i.Box1099;
从已删除的i中选择@MiscBox9=i.MiscBox9;
从已删除的i中选择@LastPurchaseDate=i.LastPurchaseDate;
从已删除的i中选择@LastPaymentDate=i.LastPaymentDate;
从已删除的i中选择@LastCheckNo=i.LastCheckNo;
选择@LastCheckAmt=i.LastCheckAmt from deleted i;
选择@RetentionRate=i.从已删除的i中选择RetentionRate;
选择@AverageDaysToPay=i.AverageDaysToPay from deleted i;
选择@AverageDaysOverDue=i.AverageDaysOverDue from deleted i;
选择@balancedue=i.已删除i中的balancedue;
选择@NumberOfInvToUseInCalc=i.NumberOfInvToUseInCalc from deleted i;
选择@datecreated=i.datecreated from deleted i;
选择@timecreated=i.timecreated from deleted i;
从删除的i中选择@UserCreatedKey=i.UserCreatedKey;
选择@dateupdated=i.dateupdated from deleted i;
选择@timeupdated=i.timeupdated from deleted i;
从已删除的i中选择@UserUpdatedKey=i.UserUpdatedKey;
塞勒
**Msg 3609, Level 16, State 1, Line 1
The transaction ended in the trigger. The batch has been aborted.**


create TRIGGER [dbo].[trgInsteadOfDelete] ON [dbo].[AP_Vendor] 
after DELETE
AS
    declare @apdivisionno varchar(2);
    declare @vendorno varchar(7);
    declare @vendorname varchar(30);
    declare @addressline1 varchar(30);
    declare @addressline2 varchar(30);
    declare @addressline3 varchar(30);
    declare @city varchar(20);
    declare @state varchar(2);
    declare @zipcode varchar(10);
    declare @countrycode varchar(3);

    declare @primarycontact varchar(10);
    declare @telephoneno varchar(17);
    declare @telephoneext varchar(5);
    declare @faxno varchar(17);
    declare @emailaddress varchar(250);
    declare @urladdress varchar(50);
    declare @termscode varchar(2);
    declare @reference varchar(15);
    declare @temporyvendor varchar(1);
    declare @creditcardvendor varchar(1);

    declare @holdpayment varchar(1);
    declare @electronicpayment varchar(1);
    declare @standardentryclass varchar(3);
    declare @exemptionnoOnFile varchar(1);
    declare @taxschedule varchar(9);
    declare @taxclass varchar(2);
    declare @accountkey varchar(9);
    declare @SeparateCheck varchar(1);
    declare @Comment varchar(30);
    declare @Sort varchar(10);

    declare @batchfax varchar(1);
    declare @UsePOReceiptOfInvForVendor varchar(1);
    declare @PrimaryPurchaseAddressCode varchar(4);
    declare @VendorType varchar(1);
    declare @Form1099 varchar(1);
    declare @TaxpayerIDSocialSecurityNo varchar(9);
    declare @Box1099 varchar(3);
    declare @MiscBox9 varchar(1);
    declare @LastPurchaseDate datetime;
    declare @LastPaymentDate datetime;

    declare @LastCheckNo varchar(10);
    declare @LastCheckAmt decimal(14, 2);
    declare @RetentionRate decimal(6, 2);
    declare @AverageDaysToPay decimal(3, 0);
    declare @AverageDaysOverDue decimal(3, 0);
    declare @balancedue decimal(15, 2);
    declare @NumberOfInvToUseInCalc decimal(7, 2);
    declare @datecreated datetime;
    declare @timecreated varchar(8);
    declare @UserCreatedKey varchar(10);

    declare @dateupdated datetime;
    declare @timeupdated varchar(8);
    declare @UserUpdatedKey varchar(10);
    declare @UDF_LONG_NAME varchar(60);

    declare @audit_Event varchar(10);
    declare @audit_log varchar(100);
    declare @dbname varchar(50);

    declare @Deletedbname varchar(50);

    declare @rowcount int;
    declare @TableName varchar(50);
    declare @TableFieldName varchar(50);

    declare @dbcounter int;
    declare @tablecounter int;
    declare @cnt INT ;
    DECLARE @selectVendorno varchar(75)

    select @apdivisionno =i.APDivisionNo from deleted i;    
    select @vendorno=i.VendorNo from deleted i; 
    select @vendorname=i.VendorName from deleted i;
    select @addressline1 =i.AddressLine1 from deleted i;    
    select @addressline2=i.AddressLine2 from deleted i; 
    select @addressline3=i.AddressLine3 from deleted i; 
    select @city =i.City from deleted i;    
    select @state=i.state from deleted i;   
    select @zipcode=i.zipcode from deleted i;   
    select @countrycode =i.countrycode from deleted i;  
    select @primarycontact=i.PrimaryContact from deleted i; 
    select @telephoneno=i.TelephoneNo from deleted i;   
    select @telephoneext =i.telephoneext from deleted i;    
    select @faxno=i.faxno from deleted i;   
    select @emailaddress=i.emailaddress from deleted i; 
    select @urladdress =i.urladdress from deleted i;    
    select @termscode=i.termscode from deleted i;   
    select @temporyvendor=i.TemporaryVendor from deleted i; 
    select @creditcardvendor =i.CreditCardVendor from deleted i;    
    select @holdpayment=i.holdpayment from deleted i;   
    select @electronicpayment=i.ElectronicPayment from deleted i;   
    select @standardentryclass=i.StandardEntryClass from deleted i; 
    select @exemptionnoOnFile=i.ExemptionNoOnFile from deleted i;   
    select @taxschedule=i.taxschedule from deleted i;   
    select @taxclass=i.taxclass from deleted i; 
    select @accountkey=i.accountkey from deleted i; 
    select @SeparateCheck=i.SeparateCheck from deleted i;   
    select @Comment=i.Comment from deleted i;   
    select @Sort=i.Sort from deleted i; 
    select @batchfax=i.batchfax from deleted i; 
    select @UsePOReceiptOfInvForVendor=i.UsePOReceiptOfInvForVendor from deleted i; 
    select @PrimaryPurchaseAddressCode=i.PrimaryPurchaseAddressCode from deleted i; 
    select @VendorType=i.VendorType from deleted i; 
    select @Form1099=i.Form1099 from deleted i;
    select @TaxpayerIDSocialSecurityNo=i.TaxpayerIDSocialSecurityNo from deleted i; 
    select @Box1099=i.Box1099 from deleted i;   
    select @MiscBox9=i.MiscBox9 from deleted i;
    select @LastPurchaseDate=i.LastPurchaseDate from deleted i; 
    select @LastPaymentDate=i.LastPaymentDate from deleted i;   
    select @LastCheckNo=i.LastCheckNo from deleted i;
    select @LastCheckAmt=i.LastCheckAmt from deleted i;
    select @RetentionRate=i.RetentionRate from deleted i;
    select @AverageDaysToPay=i.AverageDaysToPay from deleted i;
    select @AverageDaysOverDue=i.AverageDaysOverDue from deleted i;
    select @balancedue=i.balancedue from deleted i;
    select @NumberOfInvToUseInCalc=i.NumberOfInvToUseInCalc from deleted i;
    select @datecreated=i.datecreated from deleted i;
    select @timecreated=i.timecreated from deleted i;
    select @UserCreatedKey=i.UserCreatedKey from deleted i;
    select @dateupdated=i.dateupdated from deleted i;
    select @timeupdated=i.timeupdated from deleted i;
    select @UserUpdatedKey=i.UserUpdatedKey from deleted i;
    select @UDF_LONG_NAME=i.UDF_LONG_NAME from deleted i;
    select @Deletedbname= DB_NAME();

    set  @dbcounter =0;
    set  @tablecounter =0;

    DECLARE @sql NVARCHAR(MAX) 
    DECLARE @deleteSql NVARCHAR(MAX) 

    select @rowcount=count(*) from [Mas_Master].[dbo].[Master_Vendor] where vendorno=@vendorno and deleteflag=1;



    BEGIN
        if(@rowcount<=0) 
        begin
                Rollback;
                DECLARE db_cursor CURSOR FOR  
                SELECT [dbname] FROM [Mas_Master].[dbo].[lookup_dbName]

                OPEN db_cursor   
                FETCH NEXT FROM db_cursor INTO @dbname 

                WHILE @@FETCH_STATUS = 0   
                BEGIN   

                           DECLARE Table_cursor CURSOR FOR  
                           SELECT [TableName],[TableFieldName] FROM [Mas_Master].[dbo].[lookupTableName]
                           OPEN Table_cursor   
                           FETCH NEXT FROM Table_cursor INTO @TableName,@TableFieldName 

                           WHILE @@FETCH_STATUS = 0  
                           BEGIN   


                                if(CONCAT(@dbname, '_', @TableName)<>CONCAT(@Deletedbname, '_', 'AP_VENDOR'))  /*Not Check For Same Database */
                                 Begin

                                    set @sql='Select  @cnt=count(*) from ' +@dbname+'.dbo.'+@TableName +' where '+ @TableFieldName +'= ''' + @vendorno + '''';
                                    EXECUTE sp_executesql @sql, N' @cnt int out', @cnt OUTPUT

                                    INSERT INTO Mas_master.dbo.testDelete
                                            VALUES
                                           (
                                           @dbname
                                           ,@TableName
                                           ,@vendorno,@sql,@cnt
                                           )

                                        if(@cnt>0)
                                        Begin
                                            SET @tablecounter = @tablecounter + 1;
                                            break;  
                                        end
                                 End



                                FETCH NEXT FROM Table_cursor INTO @TableName,@TableFieldName 
                           End
                           CLOSE Table_cursor;
                           DEALLOCATE Table_cursor;
                 SET @dbcounter = @dbcounter + 1;
                 FETCH NEXT FROM db_cursor INTO @dbname   
                END 
             CLOSE db_cursor;
            DEALLOCATE db_cursor;
                /* if no match vendor found on other database then mark master table vendor delete*/
                if(@tablecounter=0)
                begin
                       UPDATE [Mas_Master].[dbo].[Master_Vendor]
                         SET [DeleteFlag] = 1
                        where vendorno=@vendorno
                End

        end
        else /* if delete Flag = 1 then delete vendor from current database table and master vendor table */
        Begin
              set @deleteSql= 'DELETE FROM '+@Deletedbname+'.dbo.AP_Vendor WHERE vendorno=@vendorno';
              EXECUTE sp_executesql @deleteSql, N'@vendorno nvarchar(75)', @vendorno = @vendorno
              DELETE FROM Mas_Master.dbo.Master_Vendor WHERE vendorno=@vendorno
        End
    End 
EXEC sp_configure 'nested triggers';
EXEC sp_dboption 'YOUR_DATABASE_NAME', 'recursive triggers';
EXEC sp_configure 'nested triggers', 1;
EXEC sp_dboption 'YOUR_DATABASE_NAME', 'recursive triggers', true;