sql >> データベース >  >> RDS >> Mysql

PHPを介してmysqlトリガーを作成しますか?

    mysqli DELIMITERでは何もしません multi-query ステートメントでは、実際には通常のクエリでは区切り文字をまったく使用しないため、トリガーを1つずつ押し込みます。

    $ 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. 配列MySQLとPHPから挿入クエリを作成する

    2. 日付を比較するOracleSQL

    3. mysqlのストアドプロシージャ呼び出しに変数を渡すことは可能ですか?

    4. CREATETABLEの後にテーブルが存在しません