2010-05-06 3 views
0

J'ai un programme écrit en C# avec une base de données SQL Server. Dans la base de données il y a une table (ProcessData) avec 3 colonnes: ID (PK, auto-ID), Start (DateTime), End (DateTime).Mise à jour/insertion de la table de base de données SQL Server

Il y a également beaucoup de threads qui vont insérer de nouvelles lignes dans la table de la base de données (ProcessData) toutes les quelques minutes/secondes.

Je souhaite insérer au début uniquement les colonnes ID et Start, et après quelques minutes/secondes SELON L'ID, ajoutez la colonne Fin.

Comment puis-je faire cela?

Un grand merci,

Répondre

1

Donc, vous voulez insérer une nouvelle ligne, capturer l'ID nouvellement créé, et plus tard mettre à jour la ligne ??

Quelque chose comme ça

DECLARE @NewID INT 

INSERT INTO dbo.tblProcessData(Start) VALUES (@Start) 
SELECT @NewID = SCOPE_IDENTITY() 

et plus tard:

UPDATE dbo.tblProcessData 
SET End = @End 
WHERE ID = @NewID 

Est-ce que vous cherchez ??

0

À moins que je me manque quelque chose que vous pourriez faire une déclaration d'insertion au début

INSERT INTO tblProcessData (Start) VALUES (@Start) 

Puis, plus tard une déclaration de mise à jour

UPDATE tblProcessData SET [email protected] WHERE [email protected] 

Il y a plusieurs façons à peau un chat, mais c'est l'un des moyens T-SQL

+0

Ok, que la toute puissante question: Comment obtenir l'ID d'une instruction d'insertion? – Oliver

+3

La fonction SCOPE_IDENDITY() contient le dernier ID inséré d'une étendue. Sélectionnez pour cela;) – TomTom

+0

La réponse laissée par marc_s est une version plus complète de la mienne qui comprend le retour de l'ID etc –

0

Votre tableau ProcessData Contient

ID(PK, auto-ID) 
Start(DateTime) 
End(DateTime) 

Recherche

Insert Into ProcessData(Start) values (your value) 

After some time 

Update ProcessData Set End=(your value) where ID= (your ID) 
Questions connexes