sql >> Databáze >  >> RDS >> Sqlserver

Sledování změněných polí bez udržování historie

Jak používat bitové pole v TSQL (pro aktualizace a čtení)

Nastavte bitfield na výchozí hodnotu 0 na začátku (to znamená žádné změny), měli byste použít typ int pro až 32 bitů dat a bigint pro až 64 bitů dat.

Chcete-li nastavit bit v bitovém poli, použijte | (operátor bit OR) v příkazu aktualizace, například

UPDATE table 
SET field1 = 'new value', bitfield = bitfield | 1

UPDATE table 
SET field2 = 'new value', bitfield = bitfield | 2

atd. pro každé pole použijte 2 až mocninu N-1 pro hodnotu za |

Pro čtení bitového pole použijte & (operátor bit AND) a podívejte se, zda je to pravda, například

SELECT field1, field2,
       CASE WHEN (bitfield & 1) = 1 THEN 'field1 mod' ELSE 'field1 same' END,
       CASE WHEN (bitfield & 2) = 2 THEN 'field2 mod' ELSE 'field2 same' END
FROM table

poznámka Pravděpodobně bych nepoužil text, protože jej bude používat aplikace, něco takového bude fungovat

SELECT field1, field2,
        CASE WHEN (bitfield & 1) = 1 THEN 1 ELSE 0 END AS [field1flag],
        CASE WHEN (bitfield & 2) = 2 THEN 1 ELSE 0 END AS [field2flag]
FROM table

nebo můžete použít !=0 výše, abyste to zjednodušili, jako jsem to udělal v níže uvedeném testu

Aby test neměl chyby, musíte kliknout na test>

původní odpověď:

Pokud máte v tabulce méně než 16 sloupců, můžete uložit „vlajky“ jako celé číslo a poté použít metodu bitového příznaku k označení sloupců, které se změnily. Prostě ignorujte nebo se neobtěžujte označovat ty, které vás nezajímají.

Pokud je tedy příznakové pole BOOLEAN AND 2^N pravdivé, znamená to, že se N-té pole změnilo.

Nebo příklad pro max. N =2

0 - nic se nezměnilo (všechny bity 0)

1 - pole 1 změněno (první bit 1)

2 - pole 2 změněno (druhý bit 1)

3 - pole 1+2 změněno (první a druhý bit 1)

pro lepší definici viz tento odkaz:http://en.wikipedia.org/wiki/Bit_field



  1. Načtení hodnoty JCombobox z My Sql

  2. Jak připojit R k Oracle?

  3. Jak mohu změnit MariaDB na MySQL v XAMPP?

  4. Umožněte zákazníkům business intelligence prostřednictvím datových katalogů, obchodních glosářů a správy dat