Jag förstår hur COLUMNS_UPDATED opererar och fungerar på de första 8 bitarna. Men sedan? Om man vill undersöka tex om kolumn 3, 11 och 15 uppdaterats, hur gör man då?
Skulle gärna se ett förklarande exempel!
5 svar · 296 visningar · startad av aasah
Jag förstår hur COLUMNS_UPDATED opererar och fungerar på de första 8 bitarna. Men sedan? Om man vill undersöka tex om kolumn 3, 11 och 15 uppdaterats, hur gör man då?
Skulle gärna se ett förklarande exempel!
aasah skrev:
Jag förstår hur COLUMNS_UPDATED opererar och fungerar på de första 8 bitarna. Men sedan? Om man vill undersöka tex om kolumn 3, 11 och 15 uppdaterats, hur gör man då?
Skulle gärna se ett förklarande exempel!
CREATE TRIGGER updEmployeeData
ON employeeData
FOR update AS
-- Check whether columns 2, 3 or 4 has been updated. If any or
all of
-- columns 2, 3 or 4 have been changed, create an audit record.
-- The bitmask is: power(2,(2-1))+power(2,(3-1))+power(2,(4-1)) =
14
-- To check if all columns 2, 3, and 4 are updated, use = 14 in
place of
-- >0 (below).
IF (COLUMNS_UPDATED() & 14) > 0
-- Use IF (COLUMNS_UPDATED() & 14) = 14 to see if all of columns 2, 3,
-- and 4 are updated.
BEGIN
-- Audit OLD record
Hittat på: http://database.ittoolbox.com/groups/technical-functional/sql-server-l/columns_updated-100440
Kanske kan vara något du kan ha hjälp av?
Freddemannen, ditt exempel rör enbart kolumnerna 2, 3, 4 som alla är mindre än 9. :OO
Det jag behöver hjälp med är hur det fungerar för kolumn 9 och uppåt, samt vad som händer om man vill jämföra för mer än en "oktett", tex 3, 11 och 15
Använd 9 bitar eller mer. Nionde kolumnen = 256
sen så kan du kombinera flera columns_updated med and och or
LarsG skrev:
Använd 9 bitar eller mer. Nionde kolumnen = 256
Kan du visa ett exempel för högre bitar? Det enda exempel jag har sett, som jag inte förstod, ägnade sig åt att på något vis flytta de 8 tecknen i sidled ...? :q Dvs på något sätt bortsåg man ifrån att det var bit 9-15 och behandlade det som bit 0-8 - fast ändå inte... Min beskrivningen är hemsk för exemplet gick inte hem, det var bara rörigt...
LarsG skrev:
sen så kan du kombinera flera columns_updated med and och or
Åh! Ja, det var ju smart!
Om du vill testa på kolumnera 3, 11, 15 så blir det 2^2 + 2^10 + 2^14 = 17412. Jag har bara läst dokumentationen och där står att man kan ange ett heltal och jag ser inte att det skulle vara begränsat till en tinyint.