2010-02-23 27 views
5

Dường như derby không hỗ trợ câu lệnh có điều kiện [IF]. Làm cách nào để chúng tôi viếtbáo cáo điều kiện trong derby

if exists (select 1 from customers where name='somename') 
    update customers ... 
else 
    insert into customers ... 

trong trận derby? Derby cũng không có 'thay thế' của mysql.

Lưu ý: Tôi đang sử dụng derby làm đơn vị kiểm tra thay thế cho mysql [đó là sản xuất sẽ sử dụng mysql và kiểm tra đơn vị sẽ sử dụng derby].

Trả lời

2

Còn khoảng http://db.apache.org/derby/docs/10.2/ref/rrefcasenullif.html#rrefcasenullif thì sao?

CASE 
     WHEN 1 = 2 THEN 3 
     WHEN 4 = 5 THEN 6 
     ELSE 7 
    END 

Vì vậy, có lẽ bạn có thể thử một cái gì đó như:

CASE 
WHEN select 1 from customers where name='somename' = 1 THEN update... 
ELSE insert... 
END 

Tôi không có ý tưởng nếu điều đó sẽ làm việc nhưng nó có vẻ như một sự khởi đầu. Chúc may mắn!

chỉnh sửa: Sau khi thử một vài trong số những điều này ... Tôi không biết điều này có thực sự giúp bạn hay không. Có vẻ như bạn không thể chuyển đổi giữa SELECT và INSERT; nó phải là một hoặc cái kia và CASE đi vào bên trong. Những gì bạn muốn làm có thể hoặc không thể ...

+0

Điều này sẽ không hoạt động. Derby DB không được ghi nhận không đề cập đến rằng mệnh đề CASE chỉ có thể được sử dụng như một phần của mệnh đề SQL khác, ví dụ: LỰA CHỌN. Ví dụ, SELECT COUNT CASE (*) KHI 1 THEN 10 ELSE 20 END TỪ

ĐÂU Andreas

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