2010-03-02 23 views
8

tengo unas tablas Coches y CarDescriptionsinsertar o actualizar si el registro está en la tabla

coches: IDCar (int, PK, autoincrement) carsDesciptions (IDDescription, Cabecera (nvarchar), contenido (nvarchar), . idCar (int, FK)

En aplicación estoy añadiendo coches y editar las existentes

Mis problemas:

1.¿Cómo guardar el automóvil cambiado con descripciones en la base de datos?

tengo Identificación del coche, y tengo las identificaciones de las descripciones

Clase CarDescirption no tiene ningún piscina como IsChanged, por lo

Yo no quiero hacer algo como:

  1. eliminar de carsdescriptions donde idcar = @ idcar
  2. inserción en cardescriptions (, @ encabezado, contenido @, @ iDCar)

el registro debe ser actualizado si está en la tabla, y se inserta si no existe en la tabla

+0

¿Qué base de datos está utilizando? –

+0

microsoft sql server 2005 – user278618

Respuesta

12

Tiene la mejor perfomacne:

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

probablemente algo similar con algunas modificaciones funcionaría

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) 

Tener un vistazo a este artículo así, le dará una visión más clara

+0

Sé actualizar :) – user278618

0

Usted querrá hacer un SI EXISTE primero para ver si el registro existe en la tabla. Si no lo hace, INSERTE el auto nuevo, de lo contrario ACTUALIZAR el registro existente.

7

En SqlServer 2008 existe an UPSERT command que hace exactamente esto. No lo intenté.

Cuestiones relacionadas