環境
動的に生成された .sql ファイルには、他のテーブルに依存するさまざまなテーブルにデータを挿入するために使用される一連の挿入ステートメントが含まれています。
各挿入ステートメントが実行された後、特定のテーブルに自動インクリメントされた id 列がある場合、テキスト "SET @autoIncrementColumnName = LAST_INSERT_ID();" その挿入ステートメントの最後の挿入 ID を mysql 変数に格納するものが生成されます。次に、その特定のテーブルに別の INSERT ステートメントがある場合は、プロセスが繰り返されます。問題は、各ステートメントが「SET @autoIncrementColumnName = LAST_INSERT_ID();」であることです。後で .sql ファイルで変数を使用できるようになる前に、以前の変数を上書きします。
そのため、後で .sql スクリプトに次のような 2 行が表示されます。
INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');
INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');
以前に保存した mysql 値を挿入する必要がありますが、1 つを除いてすべての変数が上書きされています。
2 つの質問
MYSQL のみを使用して可変変数を作成することは可能ですか? このような:
SET @dynamicVarName = CONCAT('guestCreditCardId', LAST_INSERT_ID()); SET @@dynamicVarName = LAST_INSERT_ID();
可変変数が使用できない場合、どのソリューションを使用できますか?