2009-04-15 27 views
8

tôi làm điều gì đó nhưsqlite, UPDATE OR REPLACE

CẬP NHẬT OR REPLACE someTable SET a = 1, b = 2 ĐÂU c = 3

Tôi hy vọng nếu nó doesnt tồn tại nó sẽ được chèn vào DBS. Nhưng không có gì xảy ra và tôi không có lỗi. Làm thế nào tôi có thể chèn dữ liệu, thay thế nó nếu nó đã tồn tại và sử dụng một nơi cho tình trạng này (thay vì thay thế BC của một ID duy nhất)

Trả lời

16

cẩn thận, INSERT OR REPLACE không có hành vi dự kiến ​​của "CẬP NHẬT HOẶC THAY THẾ".

Nếu bạn không đặt giá trị cho tất cả các fied, INSERT HOẶC THAY THẾ sẽ thay thế chúng bằng giá trị mặc định, trong khi với UPDATE bạn mong đợi giữ giá trị cũ.

Xem câu trả lời của tôi ở đây để có ví dụ: SQLite - UPSERT *not* INSERT or REPLACE

9

Hãy thử

INSERT OR REPLACE INTO [someTable] (a,b) VALUES(1,2) WHERE c = '3' 
+3

Cú pháp này không hợp lệ. Hãy xem xét https://www.sqlite.org/lang_insert.html để chèn và https://www.sqlite.org/lang_select.html để chọn. Không thể thêm mệnh đề where sau giá trị (...). –

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