können wir checksum verwenden, um zu überprüfen, dass die Zeile geändert wurde(sql-server)?
Create table Info
(
Personid int,
PersonNo int
)
insert into Info(Personid,PersonNo) values(3,4)
Hier können wir sehen, die Prüfsumme mit dem Wert der jeweiligen Zeile
Select CHECKSUM(Personid ,PersonNo ) from Info
Nun update ich den Wert der PersonNo und überprüfen Sie die Prüfsumme der Zeile
Prüfsumme Wert geändert wurde
also an diesem Auftrag kann ich wissen, dass eine bestimmte Zeile geändert wurde
also meine Frage ist, Ist dieser sicher oder korrekt?
- Noch einfacher und besser zu bedienen: die
ROWVERSION
- Datentyp. Wenn Sie eine Spalte, die den Typ, werde es aktualisiert werden für jeden Betrieb und kann folglich verwendet werden, um zu überprüfen, ob eine änderung aufgetreten ist, da die Zeile gelesen wurde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht sicher,
CHECKSUM
produzieren könnte Duplikate für verschiedene Daten.In SQL Server, um zu überprüfen, ob die Zeile geändert wurde, zwischen
ROWVERSION
(oder es ist synonimTIMESTAMP
) ist in der Regel verwendet, aber Sie müssen hinzufügen einer Spalte zu einer Tabelle. Dies ist nicht wirklich ein timestamp, sondern nur ein Datenbank-breiten Zähler und wird automatisch verwaltet, für jede aktualisierte Zeile. Beachten Sie, dass es wird sich ändern, wenn eine UPDATE-Anweisung ausgegeben wird, wird der Inhalt tatsächlich bleiben kann, im Gegensatz zu der Prüfsumme.Oder Sie können Rollen Sie Ihre eigenen echten timestamp - fügen Sie eine datetime-Spalte der erforderlichen Präzision und aktualisieren Sie Sie manuell.
Vom PRÜFSUMME (Transact-SQL)
Tun, beachten Sie aber, dass