Solved

Basic Trigger Question

Posted on 2008-06-12
9
203 Views
Last Modified: 2010-04-21
What I would like to do:

string strConstant = "This is the beginning"

When a record is inserted, I want to immediately grab the value of a ntext field and append it to the strConstant variable and then update the ntext field with the vaule of the strConstant.  

I have no experience with triggers and was hoping for some direction.  Should I use an after insert?
can some one give me a little snippet?
0
Comment
Question by:ASIADMIN
  • 5
  • 3
9 Comments
 
LVL 60

Accepted Solution

by:
chapmandew earned 500 total points
ID: 21768477
create trigger trmytriggername on yourtablename
for insert
as
begin
update t
set somefieldname = somefieldname + cast(ntextfield  as varchar(8000))--may need to use specific text functions to append...will likely have to cast as a varchar
from mytable t
join inserted i on t.fieldname = i.fieldname
join othertable o on t.fieldname = o.fieldname
end
0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 21769534
Try this:

CREATE  TRIGGER trmytriggername ON yourtablename 
FOR INSERT 
AS
BEGIN 
	UPDATE  t SET  
		somefieldname = 'This is the beginning' + cast(ntextfield  as varchar(8000))
	FROM mytable t
	INNER JOIN inserted i 
		ON t.pk_column = i.pk_column -- use the (primary)key column for the table
END 

Open in new window

0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 21769545
Sorry:
CREATE  TRIGGER trmytriggername ON yourtablename 
FOR INSERT 
AS
BEGIN 
	UPDATE  t SET  
		ntextfield = 'This is the beginning' + cast(ntextfield  as varchar(8000))
	FROM mytable t
	INNER JOIN inserted i 
		ON t.pk_column = i.pk_column -- use the (primary)key column for the table
END 

Open in new window

0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 

Author Comment

by:ASIADMIN
ID: 21769642
This is what I ended up doing and it works.

Thanks for help
ALTER TRIGGER [dbo].[trgIncidentAfterInsert] ON [dbo].[Incidents] 
 after insert
AS
	declare @incidentid int;
	declare @projectid int;
	
	
	select @incidentid=i.incidentid from inserted i;
	select @projectid=i.projectid from inserted i;
 
 
	BEGIN
		if(@projectid=94) --94 is asi order
		begin
			--set @description = @description + 'test';
			update incidents set description =  'This is the beginning' + (select cast(description as nvarchar(4000)) from incidents where incidentid = @incidentid )  where incidentid = @incidentid;
		
			
		end
		
	END

Open in new window

0
 

Author Closing Comment

by:ASIADMIN
ID: 31466511
While the answer wasnt my final solution, it did help me with the cast
0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 21769851
I know the answer was already chosen but still:

A much cleaner way to do the exact same thing is posted bellow.

I think that some split points here would have been fair.
ALTER TRIGGER [dbo].[trgIncidentAfterInsert] ON [dbo].[Incidents] 
AFTER INSERT 
AS
BEGIN
	UPDATE inc SET 
		description =  'This is the beginning' + cast(inc.description as nvarchar(4000))
	FROM 
		incidents inc
		INNER JOIN inserted i
			ON inc.incidentid=i.incidentid
			AND inc.projectid=94
END 

Open in new window

0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 21769857
One correction:
ALTER TRIGGER [dbo].[trgIncidentAfterInsert] ON [dbo].[Incidents] 
AFTER INSERT 
AS
BEGIN
	UPDATE inc SET 
		description =  'This is the beginning' + cast(inc.description as nvarchar(4000))
	FROM 
		incidents inc
		INNER JOIN inserted i
			ON inc.incidentid=i.incidentid
			AND i.projectid=94
END 

Open in new window

0
 

Author Comment

by:ASIADMIN
ID: 21770519
Chalk it up to me not knowing you could split them.

Can I still split them or is it too late.
0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 21770599
Next time. ;o)

However, you can use the code I posted the last. :o)))
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For both online and offline retail, the cross-channel business is the most recent pattern in the B2C trade space.
This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question