2010-03-02 43 views
8

Tôi có một bảng Ô tô và CarDescriptionsChèn hoặc cập nhật nếu kỷ lục là trong bảng

xe: IDCar (int, PK, autoincrement) carsDesciptions (IDDescription, Header (nvarchar), nội dung (nvarchar), . idCar (int, FK)

Trong ứng dụng tôi đang bổ sung thêm xe hơi và chỉnh sửa những cái hiện có

vấn đề của tôi:

1.Làm thế nào để lưu thay đổi Xe với mô tả trong cơ sở dữ liệu ??

Tôi có ID của xe, và tôi có ID của mô tả

Lớp CarDescirption không có bất kỳ hồ như IsChanged, vì vậy

Tôi không muốn làm một cái gì đó như:

  1. xóa khỏi danh sách xe ô tô nơi idcar = @ idcar
  2. chèn vào thẻ() @ Header, @ Content, @ IDCar)

kỷ lục phải được cập nhật nếu là trong bảng, và chèn nếu không tồn tại trong bảng

+0

Bạn đang sử dụng cơ sở dữ liệu nào? –

+0

microsoft sql server 2005 – user278618

Trả lời

12

Nó có perfomacne tốt nhất:

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

lẽ một cái gì đó tương tự với một số thay đổi sẽ làm việc

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) 

Hãy nhìn vào bài viết này là tốt, sẽ cung cấp cho bạn cái nhìn sâu sắc hơn

+0

Tôi biết cập nhật :) – user278618

0

Bạn sẽ muốn làm một IF EXISTS đầu tiên để xem kỷ lục tồn tại trong bảng. Nếu nó không, INSERT chiếc xe mới, khác UPDATE bản ghi hiện có.

7

Trong SQLServer naêm 2008, coù an UPSERT command mà thực hiện chính xác này. Tôi đã không thử nó.

Các vấn đề liên quan