Update table after an Insert

I am looking for a trigger that will update my table after an Insert.

Table to run trigger on "TEMP"
When a record is entered I want to take the Field "MTSS_NAME" and go to the table called "ANALYST"

Analyst Table Contains the Fields "EMAIL" and "ManagerName"

Find all of the Email with the "ManagerName = to Mtss_Name" and create a string separated with a ";" and update the table "TEMP" with that string into the field "DistrictDL"

Can someone help Please.
LVL 2
xeroxcanadaAsked:
Who is Participating?
 
xeroxcanadaConnect With a Mentor Author Commented:
Final trigger that works.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER TRIGGER [IS_USA]
ON [dbo].[temp]
AFTER INSERT
AS

DECLARE @p1 varchar (50)  
DECLARE @p2 varchar (10)


BEGIN
  SELECT                        
      @p1 = MTSS_Name,
      @p2 = Escal_ID,

FROM Inserted

      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

    -- Insert statements for procedure here

INSERT temp_email (Entry, Email)

SELECT Entry, Email
FROM Analyst  
WHERE ManagerName = @p1

--(select * from temp_email)

declare @sqlstr varchar(max),
            @crtid integer, @Getmail varchar (max)

set  @sqlstr =  ''

DECLARE email_list CURSOR FOR (SELECT Entry  FROM temp_email)
OPEN email_list
      FETCH next FROM email_list INTO @crtid
      WHILE @@fetch_status=0
      BEGIN
            set @sqlstr = @sqlstr + (select email from temp_email where Entry = @crtid) + ';'
      FETCH next FROM email_list INTO @crtid
      END
CLOSE email_list
DEALLOCATE email_list
DELETE temp_email
--Print @sqlstr
EXEC CreateDL @sqlstr,@p2

END
0
 
Patrick MatthewsCommented:
zeroxcanada,

With respect, that is not a good idea.  For example, while this can be done to get the value correct at the INSERT time, what happens if later on the emails on the analyst table change?

You are better off to instead use a select query at the time you need the data.  This is rather easily done using FOR XML PATH, assuming you are on SQL 2005 or later.

Patrick
0
 
xeroxcanadaAuthor Commented:
Sorry but I am really green here.
I need to update the record as it is entered into the database.
The emails are inserted once.
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
tliottaCommented:
If it really must be done, I would use a BEFORE INSERT trigger in DB2 to set the value of the column before it gets written to the table. I'm not sure of a good reason for doing it as an update after it's written.

I don't have appropriate experience with SQL Server to provide a reliable example.

Tom
0
 
Anthony PerkinsCommented:
I realize you are have stated you are "really green here", however, you should know that TRIGGERs fire once per statement and not once per row.  Clearly the way you have it coded does not apply when more than one row is INSERTed.
0
 
xeroxcanadaAuthor Commented:
I Need to understand this a bit more.
I have a form that does an Insert into the DB and inserts a new row.
So when that happens the trigger fires.

So if the form is sent twice lets say at the same time will the trigger fire twice or once?
The chance of someone filling in the form at the exact same time is very minimal.
I only get about 30 inserts in an 8-12 hour period.
So what am I missing?
0
 
Anthony PerkinsCommented:
So what am I missing?
If your INSERT statement inserts more than one row, the TRIGGER will fire only once and in consequence @p1 and @p2 will contain the values from one row, even though INSERTED contains more than one row. If this will never happen (a single user INSERTs more than one row at one time) than you should be able to sleep fine.
0
 
xeroxcanadaAuthor Commented:
zzzzzzzzzzzzzzzzzzzzzzzzzzz...Thank You for clearing that up.
0
 
xeroxcanadaAuthor Commented:
Figured it out
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.