1

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

従業員 > ID (PK)、名前

家族 > family_id (PK)、id (従業員 PK)

父 > 父の ID (PK)、家族の ID (家族の PK)、父の名前

mysql_insert_id()またはを使用して最後に挿入された ID を取得できることはわかってLAST_INSERT_IDいます。ID を取得して、次のように各テーブルに挿入したかったのです。

INSERT INTO employee VALUES('', '<value>')
//
//
INSERT INTO family VALUES('', '".mysql_insert_id()."')
// id from employee PK
//
INSERT INTO father VALUES('', '".mysql_insert_id()"', '')
// id from family PK

私は正しいことをしていますか?はいの場合、まったく同じことを行うためのより良い方法はありますか?

ありがとうございました。:)

4

1 に答える 1

0

はい、それが正しい方法です (mysql_ fns に関する警告を考慮して)。しかし、2 番目と 3 番目の例で整数値を引用しました。これは悪い考えです。

このアプローチの欠点は、パフォーマンスのボトルネックになる可能性のある、準備されたステートメントのサーバー側の解析 (クエリの送信、結果の取得、挿入 ID の要求の送信、挿入 ID X 3 の取得) がなくても、データベースへの複数のラウンドトリップが必要になることです。

この場合、それを Mysql 関数としてパッケージ化すると、操作を DBMS への単一の呼び出しとして実行できます (前者は挿入 IDを返すことができるため、プロシージャではなく関数を使用します)。

于 2013-10-30T11:56:36.213 に答える