Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Utworzyć wyzwalacz mysql przez PHP?

Podczas gdy mysqli nie robi nic za pomocą DELIMITER w multi-query w normalnych zapytaniach nie robi nic z ogranicznikami, więc po prostu umieść wyzwalacze jeden po drugim:

$ cat i.php 
<?php
$mysqli = new mysqli('localhost', 'test', '', 'test');
$sql = "
CREATE TRIGGER `_foo_fulltext_update` AFTER UPDATE ON `foo`
  FOR EACH ROW BEGIN
    DELETE FROM `bar` WHERE `bar`=NEW.`bar`;
    INSERT INTO `bar` (bar) SELECT bar FROM `foo` WHERE `bar`=NEW.`bar`;
  END;
";
$mysqli->query($sql);
var_dump($mysqli->error);
$ php i.php 
string(0) ""
$ mysql
mysql> use test;

Database changed
mysql> show triggers\G
*************************** 1. row ***************************
             Trigger: _foo_fulltext_update
               Event: UPDATE
               Table: foo
           Statement: BEGIN
    DELETE FROM `bar` WHERE `bar`=NEW.`bar`;
    INSERT INTO `bar` (bar) SELECT bar FROM `foo` WHERE `bar`=NEW.`bar`;
  END
              Timing: AFTER
             Created: NULL
            sql_mode: 
             Definer: [email protected]
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: utf8_general_ci
1 row in set (0.00 sec)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Nie można utworzyć tabeli (errno:150)

  2. Ignoruj ​​puste wyniki w zapytaniach JOIN MySQL

  3. Skopiować wartość autoinkrementacji do innej kolumny podczas wstawiania?

  4. Modyfikowanie zapytania MySQL, które usuwa duplikaty

  5. Wprowadzenie do indeksów SQL