Forums Neueste Beiträge
 

SQL Table Lock

04/02/2009 - 13:44 von Pawel Warmuth | Report spam
Hallo zusammen,

ich stehe vor einem kleinem Problem :

ich habe zwei Tabellen in der einen Stehen Umfrage ergebnisse mit ienem
Primary Key (ID Feld mit Auto increment)
Dazu gehört eine zweite Tabelle die nen FK auf ID hat)

In diese Tabelle können mehrere Datenreihen abgespeichert werden , müssen
aber eindeutig einer ID in der anderen Tabelle zuweisbar sein

Mit einem Insert ist es also nicht getan

Deswegen meine Idee : Ich lese die höchste ID aus setzte den wert +1

Damit mir aber keiner zwischenfunkt will ich nen Tablelock machen damit mir
keiner zwischenfunkt .

Leider weiß ich nicht wie ich innerhalb eines Zeitraumes nen table lock
setzten kann. Für ne Selectanweisung nehme ich nen with(TABLOCK) das hàlt
aber nur für das Select .

Weiß jmd eine Lösung ?

Grüße
Pawel
 

Lesen sie die antworten

#1 Josef Poetzl
04/02/2009 - 14:23 | Warnen spam
Hallo!

Pawel Warmuth schrieb:
ich stehe vor einem kleinem Problem :

ich habe zwei Tabellen in der einen Stehen Umfrage ergebnisse mit ienem
Primary Key (ID Feld mit Auto increment)
Dazu gehört eine zweite Tabelle die nen FK auf ID hat)

In diese Tabelle können mehrere Datenreihen abgespeichert werden , müssen
aber eindeutig einer ID in der anderen Tabelle zuweisbar sein

Mit einem Insert ist es also nicht getan

Deswegen meine Idee : Ich lese die höchste ID aus setzte den wert +1



Fügst du immer nur einen Datensatz in die Tabelle mit dem
Identity-Feld ein?
Dann könntest du auf das "Zufallsergebnis" von größter Wert + 1
verzichten und nach dem Einfügen den vergebenen Identity-Wert
auslesen.

z. B.:
create procedure xxx.DatensatzEinfuegen
(
@Datenfeld1 as int,
...
)
AS
BEGIN

DECLARE @NeueID int

insert into tabelle (Feld1, Feld2, ...)
Values ()

set @NeueID = scope_identity()



set outputparameter = @NeueID

select @NeueID as ID

END


mfg
Josef

Ähnliche fragen