2010-03-02 11 views
8

Ich habe ein Tabellen Autos und CarDescriptionseinfügen oder aktualisieren, wenn Datensatz in der Tabelle ist

Autos: IDCar (int, PK, autoincrement) carsDesciptions (IDDescription, Header (nvarchar), Inhalt (nvarchar), . idCar (int, FK)

In Anwendung ich Autos bin Hinzufügen und Bearbeiten bestehender

Meine Probleme:

1.Wie man das geänderte Auto mit Beschreibungen in der Datenbank speichert ??

I ID von Auto haben, und ich habe IDs von Beschreibungen

Klasse CarDescirption keinen Pool wie IsChanged hat, so

Ich will nicht so etwas wie:

  1. aus carsdescriptions streichen idcar = @ idcar
  2. Einsatz in cardescriptions (@ Leiste, @ Inhalt, @ IDCar)

der Datensatz aktualisiert werden muss, wenn in der Tabelle ist, und eingefügt, wenn in der Tabelle

+0

Welche Datenbank benutzen Sie? –

+0

Microsoft SQL Server 2005 – user278618

Antwort

12

Es hat die beste perfomacne:

UPDATE Table1 SET (...) WHERE Column1='SomeValue' 
IF @@ROWCOUNT=0 
    INSERT INTO Table1 VALUES (...) 
5

wahrscheinlich etwas mit einigen Modifikationen ähnlich ist nicht vorhanden

IF EXISTS (SELECt * FORM carsdescriptions WHERE IDCar = @IDCar) 
     UPDATE carsdescriptions 
     SET Header = @Header, Content = @Content 
     WHERE IDCar = @IDCar 
    ELSE 
     INSERT INTO carsdescriptions (IDCar, Header, Content) 
     VALUES (@IDCar, @Header, @Content) 

haben in diesem Artikel einen Blick funktionieren würde, auch wird Ihnen mehr Einblick

+0

Ich weiß update :) – user278618

0

Sie werden eine IF EXISTS zuerst zu sehen, zu tun, wenn der Datensatz in der Tabelle vorhanden ist. Ist dies nicht der Fall, INSERT das neue Auto, ansonsten AKTUALISIEREN Sie den vorhandenen Datensatz.

7

In SqlServer 2008 gibt es an UPSERT command was tut genau dies. Ich habe es nicht versucht.

Verwandte Themen