webForumDet fria alternativet

SQL Server 2000 och COLUMNS_UPDATED

5 svar · 296 visningar · startad av aasah

aasahMedlem sedan mars 20033 451 inlägg
#1

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!

Fredde MannenMedlem sedan nov. 20013 498 inlägg
#2

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?

aasahMedlem sedan mars 20033 451 inlägg
#3

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

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Använd 9 bitar eller mer. Nionde kolumnen = 256

sen så kan du kombinera flera columns_updated med and och or

aasahMedlem sedan mars 20033 451 inlägg
#5

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!

LarsGMedlem sedan dec. 200012 465 inlägg
#6

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.

Genererad på 365 ms · cache AV · v20260730165559-full.f96bc7eb