0

これをテストするためにbasin insertステートメントを実行しようとすると、このトリガーがグループ化された関数の無効な使用に関するエラーを出し続ける理由を理解しようとしています。

私はこれを使って私が間違っていることを理解しようとしましたが、エラーは同じままです。エラー 1111

DROP TRIGGER a_num;
DELIMITER //
CREATE TRIGGER a_num BEFORE INSERT ON test_a

  FOR EACH ROW BEGIN
DECLARE last INT DEFAULT 0;
INSERT INTO test_b SET full_name = CONCAT_WS(' ', NEW.f_name, NEW.l_name);
SET last = COUNT(id);
UPDATE test_b SET number = CONCAT_WS('-',  last, LEFT(NEW.f_name, 2), LEFT(NEW.f_name, 2)) WHERE id = last;
END;
//

使い方や構造の悪さを気にしないでください。私はかなり初心者です。

ありがとう。

4

2 に答える 2

0

test_a の CREATE ステートメントと、使用している INSERT ステートメントを提供できますか?

MySQL Workbench で test_a を右クリックすると、Copy to Clipboard..Create Statement に移動し、テーブル定義が送信されます。

同じレコードを挿入してから更新する理由はありますか? これを1つのインサートに組み合わせていただけますか?

于 2012-03-28T21:29:59.100 に答える
0

私はそうあるべきだと思います -

DROP TRIGGER a_num;
DELIMITER //
CREATE TRIGGER a_num BEFORE INSERT ON test_a

FOR EACH ROW BEGIN
    DECLARE last INT DEFAULT 0;
    INSERT INTO test_b SET full_name = CONCAT_WS(' ', NEW.f_name, NEW.l_name);
    SET last = LAST_INSERT_ID();
    UPDATE test_b SET number = CONCAT_WS('-',  last, LEFT(NEW.f_name, 2), LEFT(NEW.f_name, 2)) WHERE id = last;
END;
//
于 2012-03-28T21:23:24.383 に答える