0

mysql で after insert トリガーを作成する必要があります。

このようなテーブルが3つあります。

表1

プロジェクト ID (TestP)、サイト (st1、st2、st3)

表2

プロジェクト名,プロジェクトID,プロジェクト詳細

表3

プロジェクト名,プロジェクトの詳細,サイト

ここで、Table2 (TestProject、TestP、Details1) に 1 行を挿入するときに、Table3 に 3 行を挿入するトリガーを作成する必要があります。

値は、Table3 で次のようになります。

Row1 : TestProject,Details1,st1 Row2 : TestProject,Details1,st2 Row3 : TestProject,Details1,st3

誰か助けてください。

4

1 に答える 1

0

まず、このプロシージャをデータベースに追加します

http://forge.mysql.com/tools/tool.php?id=4 (編集 2020-09-09、リンクは現在無効ですが、ウェイバック マシンがソースを見つけました)

DELIMITER //
 
DROP PROCEDURE IF EXISTS split_string //
CREATE PROCEDURE split_string (
    IN input TEXT
    , IN `delimiter` VARCHAR(10) 
) 
SQL SECURITY INVOKER
COMMENT 
'Splits a supplied string using using the given delimiter, 
placing values in a temporary table'
BEGIN
    DECLARE cur_position INT DEFAULT 1 ;
    DECLARE remainder TEXT;
    DECLARE cur_string VARCHAR(1000);
    DECLARE delimiter_length TINYINT UNSIGNED;
 
    DROP TEMPORARY TABLE IF EXISTS SplitValues;
    CREATE TEMPORARY TABLE SplitValues (
        value VARCHAR(1000) NOT NULL PRIMARY KEY
    ) ENGINE=MyISAM;
 
    SET remainder = input;
    SET delimiter_length = CHAR_LENGTH(delimiter);
 
    WHILE CHAR_LENGTH(remainder) > 0 AND cur_position > 0 DO
        SET cur_position = INSTR(remainder, `delimiter`);
        IF cur_position = 0 THEN
            SET cur_string = remainder;
        ELSE
            SET cur_string = LEFT(remainder, cur_position - 1);
        END IF;
        IF TRIM(cur_string) != '' THEN
            INSERT INTO SplitValues VALUES (cur_string);
        END IF;
        SET remainder = SUBSTRING(remainder, cur_position + delimiter_length);
    END WHILE;
 
END //

任意の文字列を一時テーブルの行に分割します。

Table1 の列をそのプロシージャに送信し、結果の一時テーブルを使用して値を Table3 に挿入します。

于 2012-04-30T05:03:10.347 に答える