Contoh 1, MySQL, Anda dapat membatalkan penyisipan itu di pemicu dengan signal sqlstate
-
Buat tabel Anda dengan kolom varchar:
mysql> create table yar (val VARCHAR(25) not null); Query OK, 0 rows affected (0.02 sec)
-
Buat pemicu 'sebelum memasukkan' Anda untuk memeriksa kondisi dan melarangnya.
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)
-
Coba masukkan di mana kondisi terpenuhi:
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)
Anda memasukkan string kosong, pelatuk melihatnya kosong dan menaikkan sinyal untuk mencegah penyisipan.
Contoh 2, MySQL, Batalkan penyisipan di pemicu dengan menyebabkan data melanggar batasan bukan nol.
-
Buat tabel Anda dengan kolom varchar:
mysql> create table yar (val VARCHAR(25) not null); Query OK, 0 rows affected (0.02 sec)
-
Buat pemicu 'sebelum memasukkan' Anda untuk memeriksa kondisi dan melarangnya.
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)
-
Coba masukkan di mana kondisi terpenuhi:
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)
Anda memasukkan string kosong, pemicu melihatnya kosong dan mengubah nilainya menjadi nol, sehingga penyisipan dicegah.