SELECT max(employeeid) FROM Employee;
上記のクエリは、employeeid
の値を返します employeeid
のため、Employeeテーブルに最後に挿入されたレコードの 自動インクリメント列です。これは問題ないようですが、2つのスレッドがあるとします。 挿入操作を同時に実行している場合、最後に挿入されたレコードのIDが間違っている可能性があります!
心配しないでください。MySQLには、最後に挿入されたレコードの自動インクリメント列の値を返す関数があります。
SELECT LAST_INSERT_ID();
LAST_INSERT_ID()
常に接続固有 、これは、挿入操作が異なる接続から同時に実行された場合でも、常に現在の接続固有の操作の値を返すことを意味します。
したがって、最初にEmployeeテーブルにレコードを挿入し、上記のクエリを実行してid値を取得し、これを使用して2番目のテーブルに挿入する必要があります。