September 8, 2017 at 8:37 am
Hi
I have an Update trigger using binary_checksum to determine differences in many fields.
It's a SQL 2005 DB, which I don't have now, I'm checking it on 2008 to see if using EXCEPT is feasible. But it will need to be deployed on 2005.
The Trigger has missed some changes out, I cannot reproduce it. I've read that binary_checksum is unreliable.
SELECT PKID, f1,f2,f3,f4,f5,f6....
INTO #t
FROM
( SELECT PKID, binary_checksum(f1,f2,f3,f4,f5,f6....) as DChk from deleted) as Del
INNER JOIN
(SELECT PKID, binary_checksum(f1,f2,f3,f4,f5,f6....) as IChk from inserted) as Ins
ON del.PKID = Ins.PKID
WHERE Del.DChk <> Ins.IChk
-- Audit these changed values and perform other stuff
I'm considering changing the SQL that populates the temp table #t
SELECT PKID, f1,f2,f3,f4,f5,f6....
INTO #t
FROM Inserted as Ins
EXCEPT
SELECT PKID, f1,f2,f3,f4,f5,f6....
FROM Deleted
-- Audit these changed values and perform other stuff
I've never used EXCEPT is there anything I should be aware of?
Thanks
September 10, 2017 at 3:05 am
Yep, you cannot use EXCEPT on a 2005 instance. The feature wasn't introduced until SQL Server 2008.
Set Operators - EXCEPT and INTERSECT (Transact-SQL)
Joie Andrew
"Since 1982"
September 10, 2017 at 8:10 am
Joie Andrew - Sunday, September 10, 2017 3:05 AMYep, you cannot use EXCEPT on a 2005 instance. The feature wasn't introduced until SQL Server 2008.
Hmm, EXCEPT works just fine on my remaining SQL 2005 instance.
SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".
September 10, 2017 at 8:27 am
My mistake! Weird that the Microsoft documentation lists that EXCEPT starts with SQL Server 2008 but it is listed elsewhere as starting with 2005.
Joie Andrew
"Since 1982"
September 11, 2017 at 7:43 am
One other thing to be aware of is that EXCEPT eliminates duplicates.
September 13, 2017 at 4:22 pm
Chris Wooding - Monday, September 11, 2017 7:43 AMOne other thing to be aware of is that EXCEPT eliminates duplicates.
The ANSI/ISO Standard SQL has the EXCEPT ALL option. See if MS is going to catch up.
Please post DDL and follow ANSI/ISO standards when asking for help.
September 13, 2017 at 4:57 pm
Joie Andrew - Sunday, September 10, 2017 8:27 AMMy mistake! Weird that the Microsoft documentation lists that EXCEPT starts with SQL Server 2008 but it is listed elsewhere as starting with 2005.
I don't know if it's weird or if it's just typical. Since they consolidated the documentation there are a lot of things like that and it's hard to figure out what pieces of what apply to what versions. Some are really bad. But I think they defaulted everything to "Starts with 2008" if it started with 2008 or earlier when they consolidated the docs.
Sue
Viewing 7 posts - 1 through 6 (of 6 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy