2016-06-13 7 views
1

Wie kann man eine exklusive Sperre auf einen Tisch anwenden, während ein Insert erstellt wird? In meinem Fall fügen zwei verschiedene Threads Werte in dieselbe Tabelle ein und sie können nicht sehen, dass Daten anderer Transaktionen eingefügt werden.SQL Server. Wie man eine exklusive Sperre auf eine Tabelle anwendet, während eine Einfügung vorgenommen wird?

Ich möchte, dass während eine Transaktion die Zeilen einfügt, andere Transaktion wartet, bis die erste Transaktion die Werte eingefügt hat.

Stück SQL Trigger: -

BEGIN 
    insert into A(SETID,ACCTID,UPDATEDTM) 
    select @setid, l.acctid, getdate() 
    from AccountTable l where --(conditions for where clause) 

Ich möchte Tabelle sperren A für Einfügeoperationen getan.

+1

Werfen Sie einen Blick auf TABLOCK oder –

+0

TABLOCKX @RichBenner können Sie bitte Syntax für diese Entscheidung. Ich habe versucht, über Google zu suchen, konnte aber nichts fruchtbares bekommen. –

+0

Ich habe den Code in eine Antwort unten gesetzt, Tablockx ist als ein Tabellenhinweis klassifiziert. Ich habe auch weitere Lektüre hinzugefügt. –

Antwort

2

Geben Sie TABLOCKX ein, das Ihnen exklusive Sperren auf den Daten gibt;

Weiterführende Literatur;

https://msdn.microsoft.com/en-GB/library/ms187373.aspx

TABLOCK vs TABLOCKX

+0

Der Tabellenhinweis folgt dem Tabellennamen, nicht der Spaltenspezifikation. –

+0

Yeah, habe gerade gemerkt, dass ich das getan habe, Prost. –

+0

@ShardaPrasadJaiswal hat diese Antwort für dich funktioniert? –

Verwandte Themen