私はDBアプリケーションを持っており、今はレプリケーション(master-master-replication)から始める必要があります。 ストアドファンクションウィッチを構築すると、BIGINTが返されます。この値は、関連するすべてのサーバーで一意です。mySQLとLAST_INSERT_IDの問題
状況: 私はテーブル定義を持っている:テスト(COL1)の値( "foo" という)への挿入後に
CREATE TRIGGER test_insert BEFORE INSERT ON test
FOR EACH ROW BEGIN
IF NEW.id = 0 THEN
SET @my_uuid = MYUUID();
SET NEW.id = @my_uuid;
END IF;
END;
:
create table test (
id BIGINT not null primary key auto_increment,
col1 TEXT);
の表は、挿入トリガーの前にあり私はLAST_INSERT_ID()の値が必要です - しかし、私は値 "0"を取得します。
私はトリガーでこれをtry'd:
SET NEW.id = LAST_INSERT_ID(@my_uuid);
が、それは仕事をドント。
私は、トリガーと関数内のlast_insert_idのすべての変更がトリガーの終了時にキャンセルされるというmysqlのマンページを読んでいます。
だから私は、アプリケーションの変更を回避しようとする(魔女利用php.last_insert_idを())...
任意のアイデアをどのようにPHPのコードを変更せずにこの問題を解決するには?
greatings。