1

これは単一のクエリで実行できますか? テーブルには自動インクリメント フィールドがあり、テーブルの URL フィールドに入力する数値を知る必要があります。

Table 
id(AI) | title | url

私が期待しているのは次のようなものです INSERT INTO table (title,url) VALUES ('name','CONCATENATION OF title AND ID');

現在、2つのクエリを使用してこれを行っています。

1.URL以外のフィールドを書き込みます。を使用して ID を取得するmysqli_insert_id()

2.上記の行を更新します。

PS : テーブルには他のフィールドもあるため、この場合、データベースの設計を変更することは実際には不可能です。

4

2 に答える 2

2

アトミックに行うことはできません。理論的には可能ですがSELECT MAX(id) + 1 FROM yourtable、そうしないでください - これは正しい結果を保証するものではなく、間違いなく安全な方法ではありません。

とにかく、これは悪い習慣のようです。取得するときにタイトルと ID を連結してみませんか? 挿入時に連結する必要があるのはなぜですか?

于 2012-12-09T17:15:12.343 に答える
0

私はあなたのデータベースの設計についてコメントしません-あなたはその判断者です。次のコマンドは、指定されたテーブルの次の自動インクリメントIDを取得し、コードが使用する前に別のユーザーがテーブルにアクセスすると、この番号が瞬時に変更される可能性があることに注意してください。

私は自分自身と同じ理由でこのコードをプロジェクトで使用していますが、テーブルは1日に数回しか更新されず、一度に複数の人が更新することはないため、このコードは機能します。

 SELECT Auto_increment FROM information_schema.tables WHERE 
 table_name = '$name_of_your_table';

明確にするために、このコードは、指定されたテーブルの次のテーブルエントリに与えられる自動インクリメントIDを取得します。

于 2012-12-09T20:19:27.990 に答える