Ví dụ:Tôi có thể cập nhật Mới vào trước khi chèn trình kích hoạt trong sqlite không?
create table test (id numeric, t date not null);
create trigger test_in
before insert on test
for each row
when New.t is null
begin
-- set New.t = now();
end;
Set New.t đã không làm việc, where can be only select/insert/update/delete stmt. tôi không thể thay đổi cấu trúc cơ sở dữ liệu (có thể thiết lập giá trị mặc định). Sau khi chèn kích hoạt cũng không phù hợp vì "không null" hạn chế. Giải pháp duy nhất tôi đã tìm thấy:
insert into test values (New.id, now());
select raise(ignore);
cơ sở dữ liệu thử nghiệm cho mục đích minh họa mà thôi, trong thực tế có những trường hợp phức tạp hơn với các dữ liệu tính toán. Có thể có một cái gì đó như thế này "cập nhật New set New.t = now()", hay không?
Bạn có thể tạo chế độ xem bằng trình kích hoạt INSTEAD OF và chèn vào chế độ xem thay thế không? –
Nó cũng là một biến thể của quyết định, nhưng không giải quyết được vấn đề. Trong trường hợp bảng của tôi được tạo trong quá trình đồng bộ hóa. Tôi có thể chạy bất kỳ ddl sau. – lunicon
Trong mô hình cơ sở dữ liệu chính cũng được sử dụng kích hoạt với tập hợp lệnh. Tôi có thể tạo chế độ xem, nhưng sẽ phải thay đổi và lập trình (nếu tôi có thể ...) – lunicon