Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Microsoft SQL Server > Re: COLUMNS_UPD...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 3 Topic 11009 of 11517
Post > Topic >>

Re: COLUMNS_UPDATED() with triggers

by "Dan Guzman" <guzmanda@[EMAIL PROTECTED] > Apr 29, 2008 at 08:01 AM

> I found UPDATE() function that returns true if a column has changed,
> but then I found COLUMNS_UPDATED() which returns a bit mask of the
> columns that changed.

Be aware that these functions do not indicate a column value has actually 
changed as a result of an UPDATE statement.   These functions simply 
indicate that the column was specified in the SET clause.

> So far, I have the trigger only clean the columns only if ANY of the
> fields change, but I want to get a bit smarter and only clean a field
> if it changes. I cant think of a way to conditionally use the set nor
> use combinations of tests.
> Any Ideas?

Note that this is an AFTER trigger so the columns will have already been 
cleaned by the time the trigger fires.  You will need an INSTEAD OF
trigger 
and check the inserted table columns against the existing table values and

separate UPDATE statements in the trigger in order to skip updates of 
specific columns.

-- 
Hope this helps.

Dan Guzman
SQL Server MVP
http://weblogs.sqlteam.com/dang/

"rcamarda" <robert.a.camarda@[EMAIL PROTECTED]
> wrote in message 
news:6258c0ca-5d3c-4d65-a041-0978084a3bad@[EMAIL PROTECTED]
>I wish to make my trigger more efficient in that it only processes
> columns that have actually changed.
> I am currently processing 9 columns unconditionally.
> I found UPDATE() function that returns true if a column has changed,
> but then I found COLUMNS_UPDATED() which returns a bit mask of the
> columns that changed.
> So far, I have the trigger only clean the columns only if ANY of the
> fields change, but I want to get a bit smarter and only clean a field
> if it changes. I cant think of a way to conditionally use the set nor
> use combinations of tests.
> Any Ideas?
>
>
> CREATE TRIGGER [dbo].[Clean_Talisma_Lead_Raw]
>   ON  [dbo].[Talisma_Lead_Raw_tbl]
>  for  insert,update
> AS
>
> BEGIN
>  if update(first) or
>     update(last) or
>     update(address2) or
>     update(address2) or
>     update(address3) or
>     update(city) or
>     update(state) or
>     update(email) or
>     update(zip)
>  BEGIN
>  update Strayer_Staging.dbo.Talisma_Lead_Raw_tbl
>  set
>       first = dbo.udf_CleanAlphaNum(inserted.first),
>       last  = dbo.udf_CleanAlphaNum(inserted.last),
>      address1 = dbo.udf_CleanAlphaNum(inserted.Address1),
>      address2 = dbo.udf_CleanAlphaNum(inserted.Address2),
>      address3 = dbo.udf_CleanAlphaNum(inserted.Address3),
>      City = dbo.udf_CleanAlphaNum(inserted.City),
>      state = dbo.udf_CleanAlphaNum(inserted.state),
>      email = dbo.udf_CleanAlphaNum(inserted.email),
>      Zip = dbo.udf_CleanAlphaNum(inserted.Zip),
>      bad_email =  case when rtrim(inserted.email) = '' or
> inserted.email is null then null else case when
> dbo.ValidateEmailAddress(lower(replace(inserted.email,' ',''))) = 0
> then 1 else 0 end end
> from inserted
> where Talisma_Lead_Raw_tbl.Student_Insight_ID =
> inserted.Student_Insight_ID
> END
> END
 




 3 Posts in Topic:
COLUMNS_UPDATED() with triggers
rcamarda <robert.a.cam  2008-04-28 08:11:20 
Re: COLUMNS_UPDATED() with triggers
rcamarda <robert.a.cam  2008-04-28 08:14:47 
Re: COLUMNS_UPDATED() with triggers
"Dan Guzman" &l  2008-04-29 08:01:14 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Dec 3 1:14:18 CST 2008.