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

mysql memicu simulasi pernyataan

Nah, masalahnya adalah MySQL tidak memiliki yang setara dengan STOP ACTION memerintah. Jadi pada dasarnya, pekerjaan di sekitar cukup kotor:

Salah satu caranya adalah Anda dapat melanggar batasan di dalam pemicu untuk memunculkan kesalahan dan membatalkan penyisipan:

CREATE TABLE stop_action (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(35),
    UNIQUE KEY (id, name)
);
INSERT INTO stop_action (1, 'Assert Failure');

Kemudian, di pemicu, coba saja:

INSERT INTO stop_action (1, 'Assert Failure');

Manfaatnya, adalah bahwa kesalahan yang dikembalikan akan menjadi kesalahan kunci duplikat, dan teksnya akan menyertakan "Assert Failure".

Jadi pemicu Anda akan menjadi:

delimiter |

CREATE TRIGGER asser1_before BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    SELECT count(*) INTO test FROM (select count(*)
          from Video  
          where Date >= DATE_SUB(current_date(),INTERVAL  1 YEAR ) 
            && Date<=current_date()  
          group by User   
          having count(*) > 200);
    IF test != 0 THEN
        INSERT INTO stop_action (1, 'Assert Failure');
    END IF;
  END;
|

delimiter ;

Sekarang, Anda harus melakukan ini sebelum UPDATE juga, jika tidak, Anda dapat memperbarui tanggal menjadi status yang tidak valid. Tetapi sebaliknya, setidaknya itu akan membantu Anda memulai...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengembalikan nilai yang berbeda dan jumlahnya?

  2. Mengimpor GeoLite2 MaxMind ke MySQL

  3. Bangun Antarmuka PHP CRUD dengan Cepat Dengan Alat Generator CRUD Lanjutan PDO

  4. Bagaimana kategori dan subkategori untuk WooCommerce disimpan di DB?

  5. Bagaimana mengonversi subquery skalar SQL ke ekspresi SQLAlchemy