Multirow Triggers

Mar 23, 2007

Hi,

I am a sql near novice and have a problem in a project I am working on. The exact details of the tables would be too confusing to explain here so I'll use a hypothetical case,

I have a table with 4 columns reccid (int,pk), apples (int),pears(int),oranges (int), lemons (int), totfruit (int), totcitrus(int)

I have a trigger that whenever I update apples,pears,oranges or lemons columns the totfruit and totcitrus are updated with the totals.
---------------------
after update
as
BEGIN
SET NOCOUNT ON;
update fruit set
totcitrus=lemons + oranges,
totfruit=apples+pears+lemons+oranges
END
---------------------

This works fine for single row updates, but if I run a stored procedure against the table such as;

update fruit set lemons=lemons*2

Then I ger an error message of Subquery returned more than 1 value.

I know I havent written the trigger correctly for multirow updates but dont understand enough to see what I have to do, any advice would be very welcome, also can anyone recommend a suitable book.

Thanks a lot.

View 8 Replies


ADVERTISEMENT

Multirow Insert Statement,... How?

Mar 19, 2004

In MySQL I was able to insert multiple rows into the db like this:

REPLACE INTO Products (productid, price) VALUES (1, 55), (2, 88), (3, 99);


In transact-Sql (Sql Server 2000), this "REPLACE" keyword means something different. What it meant in MySQL is that if there is an existing row that has the same primary key value as one of the new rows being inserted, it will replace that old row with the new row.

How do I do this in SQL Server 2000?

Also, I can do this in MySQL:

INSERT INGORE INTO Products (productid, price) VALUES (1, 55), (2, 88), (3, 99);


This meant in MySQL is that if there is an existing row that has the same primary key value as one of the new rows being inserted, it will ignore that new row's insert and keep the values of the old row.

How do I do that also in SQL Server 2000?


Thanks

View 15 Replies View Related

MultiRow Select To SingleRow Output?

Feb 26, 2004

Here is what I want to do.

I have a customer table with say id, firstname, lastname. I also have another table called phone number that contains multiple phone numbers based on the customer id (id, customerid, phonenumber).

Ok I want to output a record like this

firstname, lastname, phone1, phone2, phone3

I need one record per customer with as many phone numbers as they may have, I could always limit the numbers to 3 or better yet return a null if there are less then the predefined number of phone numbers.

If I try a simple join I get multiline output which is no good for me.

SELECT firstname, lastname, phonenumber
FROM customer, phone
WHERE phone.customerid = customer.id

Thanks.

View 1 Replies View Related

Trigger To Handle Multirow Updates

Mar 2, 2006

I am trying to implement trigger which can handle multirow updates and which is running on replicated table. So I want it never fails as trigger failure brakes replication.

So:

CREATE TRIGGER on_person_update

BEGIN

-- create temp table

-- populate temp table with Inserted values (I do not need Deleted as PK never change)

COMMIT TRAN

-- Am I right that this insures updates on replicated table will never be rollback after this commit?

BEGIN TRAN A

-- Make a checkpoint here to be able to rollback at any time to this point if something wrong inside loop.

SAVE TRAN MyTran

-- Start looping in temp table

-- RUN DML statement to make neccesary changes for each record in temp table

-- Does it make any sense to do this (IF @ERR below)? When I am trying in DML insert string value into integer column it never gets to IF statement - terminates straight away.

-- Reason why I think I need it as this trigger might be called by another trigger and top level trigger will get an error and can make a decision based on this.

IF @ERR <> 0
BEGIN
ROLLBACK TRAN MyTran
RAISERROR('Insert or Update failed in on_person_sls_update trigger with error: %s', 16, 1, @ERR)
RETURN
END

-- End looping temp

-- Do I need here COMMIT TRAN A or trigger will make commit anyway?

END

Why all of this?

Data changed on distributor and arrive to subscriber as a transaction.

We have a trigger on replicated table which will update replicated table in any way but after that it will update another database on subscriber.

This trigger should be able to handle multirow updates.

When this trigger updates another database it runs DML which fires other triggers so they become nested, if I am right. Our trigger should always accept changes from distributor as if it fails replication brakes but after data saved in temp table none or all changes have to be made.

May be I am copmpletely wrong with this template - hope somebody will help.

Thank you,



Igor



View 2 Replies View Related

Facing Some Problem In Instead Of Trigger For MultiRow Insert

Sep 5, 2006

This is the Trigger which is not working properly during Update, no anyrecord is going to be updated so pls help.I am updating the requisition table when any update in quantity inpodetails tableCREATE TRIGGER trig_updateRequistion ON ERP.DBO.TranPurchaseOrderDetailINSTEAD OF UPDATEASIF UPDATE(Quantity)BEGINUpdate RequisitionSlipDetailset RequisitionSlipDetail.PoQuantity =(Select PoQuantity from RequisitionSlipDetail whereItemCode=(Select CAST(i.ItemCode as nvarchar(20)) from inserted as i)andRSlip_No=(Select CAST(i.RSlip_No as int) from inserted as i))-((Select Quantity from TranPurchaseOrderDetail where Purchase_OrderNo=(Select CAST(i.Purchase_OrderNo as nvarchar(20)) from inserted as i))- (Select CAST(i.Quantity as int) from inserted as i))where RequisitionSlipDetail.ItemCode = (Select CAST(i.ItemCode asnvarchar(20)) from inserted as i) and RequisitionSlipDetail.RSlip_No =(Select CAST(i.RSlip_No as int) from inserted as i)Update TranPurchaseOrderDetail setTranPurchaseOrderDetail.Quantity =(Select CAST(i.Quantity as int) from inserted as i)where TranPurchaseOrderDetail.Purchase_OrderNo = (SelectCAST(i.Purchase_OrderNo as nvarchar(20)) from inserted as i)andTranPurchaseOrderDetail.ItemCode = (Select CAST(i.ItemCode asnvarchar(20)) from inserted as i)andTranPurchaseOrderDetail.PurchaseDetailId =(Select PurchaseDetailId from TranPurchaseOrderDetail wherePurchase_OrderNo = (Select CAST(i.Purchase_OrderNo as nvarchar(20))from inserted as i))END

View 1 Replies View Related

Multiple Triggers On A Table Or Encapsulated Triggers

May 12, 2008

This isn€™t an problem as such, it€™s more of a debate.

If a table needs a number of update triggers which do differing tasks, should these triggers be separated out or encapsulated into one all encompassing trigger. Speaking in terms of performance, it doesn€™t make much of an improvement doing either depending upon the tasks performed. I was wondering in terms of maintenance and best practice etc. My view is that if the triggers do totally differing tasks they should be a trigger each on their own.

www.handleysonline.com

View 12 Replies View Related

Triggers

Jan 3, 2007

Is it possible to achieve this using triggers:When someone tries to delete a row in table A, the trigger should first delete a corresponding row in table B and then delete the row in table A. The reason being that, there is a foreign key set on Table B that references table A. So any attempt to delete a row in table A without deleting the corresponding row from B, throws an error. 

View 1 Replies View Related

Triggers

May 31, 2007

Hello All,
I have to write Trigger for Update,
I have two tables, one is for storing records of current values, and one is for storing history of values.
How to Write a Trigger on Main Table. As we have Inserted and Deleted Tables through which we can find Values, We dont have any Table for UPDATED Values.
 Help me.
 General Problem
 

View 1 Replies View Related

Triggers - Is This Possible?

Jun 15, 2007

I need to create a set of rows every time a new row is inserted into a table.
Example (I think this would work)...
select @insertedId = column1 from insertedselect @id = column1 from table1 where column2 in (select column1 from table2 where column2 = @insertedId)insert into table3 values(x, y, @id)
Is it possible to do the same kind of thing in a situation where the select statement returns multiple values and execute the insert statement for each of these values?
Also, if table3 was in fact the table on which the trigger acts, would it then be executed for every row created by the trigger?
Sorry if I sound confused. I am.

View 2 Replies View Related

Triggers

Dec 6, 2007

 
 hi everybody..i tried to put thios loop in sql server 2000 But it is not taking The @ action taken value ,,it is only taking the default value of @actiontaken value.
SET @ActionTaken = 'A' 
IF (@AType = 'A')IF @Status= 'O' IF (@KAppInd ='Y' AND @DAppInd=null)BEGINSET @ActionTaken = 'O'END
 
Please tell me other option in sql server 2000 for setting variable value based on conditions

View 3 Replies View Related

Triggers In .net

Dec 21, 2007

Hi using triggers i try to insert some values in to my 2 tables: But its showing teh error as "The request for procedure 'Triginsert123s' failed because 'Triginsert123s' is a trigger object." This is my code in back end: sqlcon.Open() Dim cmd As New SqlCommand("Triginsert123s '" & txtID.Text & "','" & txtName.Text & "','" & txtRole.Text & "','" & txtDep.Text & "'", sqlcon) cmd.ExecuteNonQuery() sqlcon.Close() My trigger is: CREATE TRIGGER Triginsert123s ON [dbo].[EmpRole] FOR INSERT AS declare @Eid as tinyint, @Ename as varchar(50), @Role as char(10) Insert into Emprole(Eid,Ename,Role) values(@Eid,@Ename,@Role) insert into empdep(eid,dep) values(@eid,@Role) Whats the probs?, Plz i am new to triggers help me,

View 3 Replies View Related

Triggers

May 9, 2004

Hi All,
I'm using triggers to handle my transaction log to cature inserts and updates. It works fine except if the user clicks on the Save button more than once, the trigger is fired and the record is written to the log even if the record wasn't changed. Does anyone know how to check if the record was actually changed so that it isn't written to the table if it wasn't?

Thank you,
Mike

View 3 Replies View Related

SQL Triggers

Jun 17, 2004

When I execute a stored proc from my asp.net page, will the results of a trigger be returned to my program?

For instance say my stored proc is:

Update Employees set
(Lastname = @Lastname)
where ID = @ID

And my trigger is:

CREATE TRIGGER tr_Employees_U on Employees FOR UPDATE AS
IF UPDATE(lastname)
BEGIN
RAISERROR ('cannot change lastname', 16, 1)
ROLLBACK TRAN
RETURN
END
GO


It seems like since this is an AFTER trigger that my webpage would actually get a valid return code from my stored procedure however the trigger would rollback those changes correct? Or would the trigger get fired and send it's return code to my webpage?

View 10 Replies View Related

Instead Of Triggers

Mar 5, 2006

I'm trying to write an instead of trigger for a view in SqlExpress...the table and views are defined as such:CREATE TABLE [dbo].[Work](    [WorkID] [int] IDENTITY(1,1) Primary Key,    [ResourceID] [int] NOT NULL,    [TaskID] [int] NOT NULL,    [WorkDate] [datetime] NOT NULL,    [WorkQuantity] [float] NOT NULL,    [IsEstimate] [bit] NOT NULL DEFAULT ((0)),    [Project] [int] NOT NULL,);CREATE VIEW [dbo].[ActualWork]ASSELECT     WorkID, ResourceID, TaskID, WorkDate, WorkQuantity, ProjectFROM         dbo.[Work]WHERE     (IsEstimate = 0);CREATE VIEW [dbo].[EstimatedWork]ASSELECT     WorkID, ResourceID, TaskID, WorkDate, WorkQuantity, ProjectFROM         dbo.[Work]WHERE     (IsEstimate = 1);Given that, what is wrong with the following create trigger statement:Create Trigger trg_InsertActualWork ondbo.ActualWork Instead of InsertasBEGIN    Insert into dbo.Work(        ResourceID, TaskID, Project,         WorkDate, WorkQuantity, IsEstimate    )    values (    inserted.ResourceID, inserted.TaskID, inserted.Project,    inserted.WorkDate, inserted.WorkQuantity, 0    );END

View 3 Replies View Related

Triggers

Dec 4, 2001

l'm trying to build a trigger on a table. The reason for the trigger is to check a certain field for the first three characters if it has ie abc it must update another field in this case loanbook to newabc.How do l write the trigger so that it also check if exists and perform the updates. Please help its Urgent. l've listed the trigger below.

CREATE TRIGGER UpdTest_TRGData
ON Test_TRG
FOR insert,Update AS

IF left('Loan_No',3)='ABC'
update Test_TRG
set loanbook = 'NEWABC'

else

IF left('Loan_No',3)='DEF'
update Test_TRG set
loanbook = 'NEWDEF'
where loanbook is null

else

update Test_TRG
set loanbook =left('Loan_No',3)
where loanbook is null

View 4 Replies View Related

Triggers

Dec 5, 2001

I'm a bit confused on this bit please elaborate : " FROM Test_TRG t INNER JOIN inserted i ON t.PK = i.PK ".
The PK is on which field? Basically this trigger should ensure that on insertion of o new loan if
The left(loan_no,3)=MCG and its null then NEWMCG
left(loan_no,3)=MCG and its null then NEWMCG
left(loan_no,3)=KVS and its null then NEWKVS
left(loan_no,3)=MFS and its null then MFS
left(loan_no,3)=TCR and its null then TCR
left(loan_no,3)=ABL and its null then ABL

Listed below is what l've tried to do but l'm missing the PK part.Otherwise everything else you explained
in the script is clear. Thanks man its urgent. When l parse the query its fine , but When l run it
l get an error.



CREATE TRIGGER UpdTest_TRGData
ON Test_TRG
FOR INSERT, UPDATE
AS

UPDATE Test_TRG
SET LoanBook = CASE WHEN LEFT( i.Loan_No, 3 ) = 'MCG' THEN 'NewMCG'
WHEN LEFT( i.Loan_No, 3 ) = 'KVS' AND i.LoanBook IS NULL THEN 'NewKVS'
WHEN LEFT( i.Loan_No, 3 ) = 'MFS' AND i.LoanBook IS NULL THEN 'MFS'
WHEN LEFT( i.Loan_No, 3 ) = 'ABL' AND i.LoanBook IS NULL THEN 'ABL'

WHEN i.LoanBook IS NULL THEN LEFT( i.Loan_No, 3 )
END
FROM Test_TRG t INNER JOIN inserted i ON t.PK = i.PK
-- Fill in Primary Key or other Join Column(s)
WHERE LEFT( i.Loan_No, 3 ) = 'MCG'
OR ( LEFT( i.Loan_No, 3 ) = 'KVS' AND i.LoanBook IS NULL )
OR i.LoanBook IS NULL

====== Error message =================

Server: Msg 207, Level 16, State 3, Procedure UpdTest_TRGData, Line 11
Invalid column name 'PK'.
Server: Msg 207, Level 16, State 1, Procedure UpdTest_TRGData, Line 11
Invalid column name 'PK'.

View 1 Replies View Related

Triggers

Jan 11, 2002

I an loading records from a flat file into a table, which is done everyday by a scheduled job in SQL Server 7.0.

How can I make sure that if the job is run twice in a day for some reason that the same rows are not inserted into the table again? Do I have to write a insert trigger on the table ??? If so how can I achive the objective ??

View 1 Replies View Related

Triggers

Jan 31, 2002

Hi! i have a simple question...is possible to create a trigger who affect multiple tables?
The idea will be something like this:

create trigger mytrigger
on sales, users
as...

of course, this don´t work :)

View 1 Replies View Related

Triggers

Aug 3, 2001

Hey everyone...

I'm working on trying to figure out how to update the child table from the parent via a trigger. This works fine as long as the value is in the child table. If it's not, then I get my foreign key violation. So, My next thought was to simply put in a begin tran / rollback tran within the trigger... My question is this : If I have multiple triggers on the parent table all based on the update of the key field (and the child tables... some 7 of them) all have FK's, if I rollback one trigger does it rollback the entire transaction? Or just the functionality of that trigger? From what I've read, it appears as if it's the entire transaction... if so, how do I get a trigger to 'ignore' itself or not fire based on a select criteria that i have within that same trigger...

Thank you...

View 3 Replies View Related

Triggers

Oct 24, 2001

I just tried creating my first trigger and I'm a little bit confused. I am trying to see if certain fields have changed and will do that by checking the values of the fields in the "master" table and the "Inserted" table. I wasn't sure which table would have the old data and which would have the new, so I created the following trigger to help me determine which was which:

CREATE Trigger upd_cost_master On tbl_cost_master
For Insert, Update As

Declare @U_Name varchar(65)
Declare @O_Name varchar(65)

Select @U_Name=I.submitted_by, @O_Name=O.submitted_by
From tbl_cost_master O Inner Join Inserted I On O.autokey = I.autokey

Print 'Inserted: ' + @U_Name
Print 'tbl_cost_master: ' + @O_Name

Commit Tran

To my surprise, @U_Name and @O_Name contained the same values. I though that one table contained the old values and one contained the new. Was I wrong? If so, is there anyway to compare the Old and New values through a trigger?

Chris

View 1 Replies View Related

Triggers....

Jul 20, 2000

Hi,

I'm using SQL Server 7.0. I have an insert trigger on table t05r. I populate table t05r with a DTS package. The trigger is supposed to add the record which was inserted into t05r, into t39r. After I run the DTS package to populate t05r, I checked t39r and no records where added. What is going wrong? Is it that DTS uses bulk copy and triggers don't fire on bulk copy?

Any help would be greatly appreciated.

Thanks in advance,
Darrin

View 1 Replies View Related

Triggers

Nov 1, 1999

I have an insert trigger on table A which inserts records into table B.
This insertion into B fails( or may fail ) at certain conditions.
I do not want the insertion into A to be affected because of this. Any ways to achieve this ?

View 1 Replies View Related

Triggers

Oct 8, 1999

Hi,
I have 3 tables A,B C and Triggers on each table like.

for insert/update on table 'C' calculates sum(xxfield) and updates
table 'B'.

for insert/update on table 'B' calculates sum(yyfield) and updates
table 'A'.

This works fine if I insert rows OneByOne.
Problem :- Doesn't work if I post entries(hundreds) in to table 'C' using a Query.

whats happening. Can anyone help Me????????

View 1 Replies View Related

TRIGGERS

Nov 12, 2001

How do I know if the triggers on table has been disabled or not. Thanks for your ideas!!!!

View 3 Replies View Related

Triggers Off

Nov 21, 2002

Hello,

I've update triggers on my table, But for some of the transactions, I don't want the triggers to fire. I know in Sybase there are set triggers off. In MS SQL, Is there any similar commands which will set triggers off for particular sql statements.

Thanks A Lot

Sejal

View 2 Replies View Related

Triggers In SQL

May 1, 2003

Hi! I am having trouble with setting triggers while doing my project. The project is on ATM machine driven through SQL. So I have Date of Transaction in one table and Account Expiry in another.

I want to set the trigger to check Account expiry when doing transaction so i wrote T-SQL

select........
getDate()-Dateoftransaction=expiry
begin '...'
end

the system saying I have got an error near the word 'begin'.

I am desperately needing help. running out of ideas.

Thanks in advance.

View 1 Replies View Related

Triggers

Jan 18, 2005

I need to create an after insert, update and delete trigger on the same table. Can I create one trigger that would have all three operations in it or I need to create three separate triggers? Thanks for your help.

View 3 Replies View Related

Triggers

Feb 23, 2006

I have not used triggers before and wanted to know if it was approproate for my issue:

When a new user registers via the web, a record is inserted into the "student" table. I would also like to insert a record into the "StudentCourse" table that adds this new student to a class (studentID, CourseID). I thought I could look into a trigger or stored procedure for this. The problem is that I do not want to mess with the programming side of it as it is an off the shelf system and written in Java/JSP, so I would like to handle this in the DB.
Thanks in advance,

View 2 Replies View Related

Need Help With Triggers

Aug 29, 2007

I am not actually sure if Triggers are the solution to my problem, but I have no experience with them and need help understanding if they will solve my problem.

Users that Access the database through our Front End Software can search on any field (indexed or not). For the most part, they search on indexed fields, but the problem is when they enter and empty string and attempt a search.

The Query that is passed to SQL essentially searches for everything - example below:

SELECT FieldA, FieldB, FieldC FROM Table WHERE IndexedField LIKE ''%'' ORDER BY IndexedField

The result of this is a timeout after 60 seconds and the server being practically coming to a halt during that wait. All users trying to make reads or writes are queued behind that query and it appears as though they are frozen. I have done a lot of monitoring with Profiler to figure out the problem, but I am stuck on how to stop it. The issue lies with the users and that is something I cannot fix. The Front End software cannot be modified. I cannot limit what they search on nor can I limit the fields they can search on.

Being that I can't do anything there, I was hoping I could intercept this query when SQL receives and possibly time it out faster. The queries follow a format, so I was hoping a trigger would do the trick.

Please provide any ideas or input that may help solve my problem. Also, if anybody has any good links to help me with triggers if that will take care of the problem.

EDIT: After doing some reading it is looking like triggers may not be applicable to my problem, but I am still looking for a solution.

Thanks in advance,

Don

View 3 Replies View Related

SQL Triggers

Apr 3, 2008

Is Cascedaing of Triggers possible..??
(Cascading means by one trigger firing another trigger and so on..)

View 1 Replies View Related

Triggers

Jun 7, 1999

I am attempting to place an update trigger on a column. The following is incorrect:

CREATE TRIGGER cus_name
ON dbo.customertable
FOR UPDATE AS
IF UPDATE(cus_name)
INSERT INTO AUDITTABLE(AUD_TABLENAME,AUD_COLNAME,AUD_OLD,AUD_N EW,AUD_DATE,LANID,COMPNO)
VALUES ('customertable','cus_name',deleted.cus_name,inser ted.cus_name,GETDATE(),inserted.lanid,inserted.com pno)


Does anybody know how to do it correctly?

View 2 Replies View Related

Triggers

Nov 23, 1998

I came for a new assignment.
Here, we've got about 70 tables and almost each table has got 3 triggers. So, in total, we have about 200 triggers, which makes the process cumbersome.

Is there a way to get rid of these triggers?
Can we replace the trigges with something else?

or any best way to debug triggers?
Thanks for your help.
Mohan.

View 1 Replies View Related

Triggers

Oct 31, 2001

How do I query any data that is changed through a trigger. IN oracle you would use .new or .old to query the data. All I can find is temporary tables called Inserted and deleted but dont seem to be able to query these tables. I need to update other tables with data that was changed in the original table through a trigger.

View 3 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved