Ví dụ 1, MySQL, Bạn có thể hủy chèn đó trong trình kích hoạt bằng signal sqlstate
-
Tạo bảng của bạn với một cột varchar:
mysql> create table yar (val VARCHAR(25) not null); Query OK, 0 rows affected (0.02 sec)
-
Tạo trình kích hoạt 'trước khi chèn' của bạn để kiểm tra điều kiện và không cho phép.
mysql> delimiter $$ mysql> create trigger foo before insert on yar -> for each row -> begin -> if new.val = '' then -> signal sqlstate '45000'; -> end if; -> end;$$ Query OK, 0 rows affected (0.01 sec)
-
Cố gắng chèn vào nơi điều kiện được đáp ứng:
mysql> delimiter ; mysql> insert into yar values(""); ERROR 1644 (45000): Unhandled user-defined exception condition mysql> insert into yar values ("abc"); Query OK, 1 row affected (0.01 sec) mysql> select * from yar; +-----+ | val | +-----+ | abc | +-----+ 1 row in set (0.00 sec)
Bạn đã chèn một chuỗi trống, trình kích hoạt thấy nó trống và tăng tín hiệu để ngăn việc chèn.
Ví dụ 2, MySQL, Hủy chèn trong trình kích hoạt bằng cách làm cho dữ liệu vi phạm một ràng buộc không null.
-
Tạo bảng của bạn với một cột varchar:
mysql> create table yar (val VARCHAR(25) not null); Query OK, 0 rows affected (0.02 sec)
-
Tạo trình kích hoạt 'trước khi chèn' của bạn để kiểm tra điều kiện và không cho phép.
mysql> delimiter $$ mysql> create trigger foo before insert on yar -> for each row -> begin -> if new.val = '' then -> set new.val = NULL; -> end if; -> end;$$ Query OK, 0 rows affected (0.01 sec)
-
Cố gắng chèn vào nơi điều kiện được đáp ứng:
mysql> delimiter ; mysql> insert into yar values(""); ERROR 1048 (23000): Column 'val' cannot be null mysql> insert into yar values ("abc"); Query OK, 1 row affected (0.01 sec) mysql> select * from yar; +-----+ | val | +-----+ | abc | +-----+ 1 row in set (0.00 sec)
Bạn đã chèn một chuỗi trống, trình kích hoạt thấy nó trống và thay đổi giá trị thành null, vì vậy việc chèn bị ngăn chặn.