Solved

trim Function in Sql Trigger

Posted on 2006-07-20
8
907 Views
Last Modified: 2008-01-16
I need to trim to tables before they are replicated to the other sql databse. I have a database called ResourceFile_FK and it has a table called Entity.

I have another database called sol_impact_db and it has a table called customer.

We have a trigger setup to move data from ResourceFile_FK to Sol_Impact_db and we are running in to a problem because the table Entitiy on ResourceFile_FK has two colum that have character lengths of 100 and the same colums on the customer table are only 30. We can not modity the colums on from 30 to 100 because it will break our solomon application that relies on that database and expects it to be 30. I need to add a line to our existing trigger that will trim anything from those two colums on Entity from 100 to 30 charaters so that it will match the customer table on sol_impact_db.  I have heard of a left / right function but have no idea how to create this.

Here is my current trigger that is setup. I am not a sql developer so sorry if I'm not explaining this in the simplest form. I'll be happy to answer any questions that will help you help me.  Thank you very much for your help.

Here is my current trigger (SOL_Entity_Upd):

CREATE TRIGGER SOL_Entity_Upd  ON [dbo].[Entity]
FOR UPDATE
AS

if ((select trigonoff from trigconfig where trigtype = 'Solomon') = 1)
BEGIN

if update(entitystatus)
begin

declare @orgnbr int
declare @entnbr int
declare @entitystatus varchar(4)
declare @entitystatus_d varchar(4)

select @orgnbr = orgnbr, @entnbr = entnbr, @entitystatus = i.entitystatus
from inserted i

select @entitystatus_d = d.entitystatus
from deleted d

if @entitystatus = 'ACTV' and @entitystatus_d <> 'ACTV' and (select count(idnumber) from alternate_id where idtype = 'imp' and orgnbr = @orgnbr and entnbr = @entnbr) = 1
begin
      set XACT_ABORT on
      exec Sol_Ins_Company @orgnbr, @entnbr
      set XACT_ABORT off
end

end      

END


0
Comment
Question by:pdiblasi
  • 3
8 Comments
 
LVL 5

Accepted Solution

by:
Dbergert earned 500 total points
ID: 17149128

LEFT (columname,30)

you should just have to put the above somewhere and repalce the column name with it.


Here is another example:

The example below for the Northwind sample SQL Server database uses the Left function to create a three character ProductCode column from the first three characters of the ProductName column:

SELECT ProductName, LEFT(ProductName, 3) AS ProductCode FROM Products




0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 17158493
On a totally unrelated note, you should be aware that Triggers are not executed for every row UPDATEd (INSERTed or DELETEd), but rather executed for every UPDATE (INSERT or DELETE) statement.  How does that affect me, you ask?  If you should update more than one row at a time the following code:

select @orgnbr = orgnbr, @entnbr = entnbr, @entitystatus = i.entitystatus
from inserted i

select @entitystatus_d = d.entitystatus
from deleted d

Will only contain the values from the last row updated.  In other words the Inserted and Deleted logical tables are tables for a reason. If this could occur you will have to place the values of the Inserted/Deleted tables in a CURSOR and execute the Sol_Ins_Company stored procedure for each applicable row.
0
 
LVL 1

Expert Comment

by:artificial_dragon
ID: 17170245
substr (columnname, 0,29)
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 17170476
artificial_dragon,

>>substr (columnname, 0,29)<<
Do you mean the T-SQL function SUBSTRING()?  If so it is 1-based not 0-based.  So that should read:
SUBSTRING(columnname, 1, 29)

Which for varchars is funcitonaly equivalent to:
LEFT(columnname, 29)

Which was alaredy suggested ...
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 17762367
Award points to Dbergert
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

In today’s complex data management environments, it is not unusual for UNIX servers to be dedicated to a particular department, purpose, or database.  As a result, a SAS® data analyst often works with multiple servers, each with its own data storage…
Using SQL Scripts we can save all the SQL queries as files that we use very frequently on our database later point of time. This is one of the feature present under SQL Workshop in Oracle Application Express.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

706 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now