Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql membuat kesalahan sintaks pemicu

Saat Anda mencoba memunculkan kesalahan melalui SIGNAL anda perlu menentukan SQLSTATE yang merupakan kode kesalahan dan untuk kode kesalahan umum yang ditentukan pengguna 45000 bersama dengan teks pesan MESSAGE_TEXT

Jadi pemicunya menjadi

delimiter //
create trigger lock_x_id before update on games
for each row
begin
 if old.xid is not null then
   signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
 end if;
end;//
delimiter ;

Kasus Uji

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 | NULL |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Ayo buat pemicunya sekarang

mysql> delimiter //
mysql> create trigger lock_x_id before update on games
    -> for each row
    -> begin
    ->  if old.xid is not null then
    ->    signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
    ->  end if;
    -> end;//
Query OK, 0 rows affected (0.05 sec)


mysql> update games set xid = 4 where id = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update games set xid = 5 where id=5;
ERROR 1644 (45000): Your custom error message

Dan setelah menjalankan 2 perintah update di atas berikut tampilan tabelnya

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 |    4 |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Perhatikan bahwa pembaruan ke-2 gagal dan baris tidak berubah.

Baca lebih lanjut tentang https://dev.mysql.com/doc ini /refman/5.5/en/signal.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penghitung Pembaruan Volume Tinggi Mysql

  2. Geolokasi dan rumus Haversine

  3. Bagaimana cara memformat tanggal dari stempel waktu di PHP?

  4. MySQL Mark Records dengan Duplikat

  5. CakePHP:Bagaimana saya bisa menggunakan operasi HAVING saat membuat kueri dengan metode find?