1

次のようなデータベースにリンクされたテーブルがあるとしましょう: http://www.falkencreative.com/forum/records/view.php

レコードを削除してから新しいレコードを追加すると、以前に削除されたレコードが新しいレコードに置き換えられ、次の ID ではなく以前に削除された ID 番号を持つようにするにはどうすればよいですか?

例えば

  1. 青い

ボタンをクリックして緑を削除します。

  1. 青い

ボタンをクリックして新しい色を追加します。入力オレンジ

  1. 青い
  2. オレンジ

1.赤 2.青 4.オレンジ (これを 3 に設定する必要がありますか?)

テーブルセッティングとしては簡単なのかもしれませんが、どうすればいいのか分からず、時間に追われています。誰かが私が何をすべきかについて私を導くことができますか?

4

4 に答える 4

1

2 つのオプションがあります。「緑」の値が以前あった同じ行を更新します。すなわち:

mysql_query("UPDATE table_name SET color = 'orange' WHERE ID = '3'");

また

mysql_query("UPDATE table_name SET color = 'orange' WHERE color = 'green'");

また

指定子が何であれ。

これは、MySql の観点から最も簡単な方法です。または、最初に概説したように削除して、 mysql_query("INSERT INTO .... で新しい行を再挿入しますが、MySql PK UID をリセットする必要があります。

mysql_query("ALTER TABLE table_name AUTO_INCREMENT = 1");

これにより、使用済みの PK ID が削除され、すべての行の番号が付け直されます。または、より簡単な解決策はありますか?

于 2012-06-09T18:59:41.160 に答える
0

古いレコードを削除して新しいレコードを挿入するのではなく、レコードを更新したいと思います。

編集:

新しいレコードを挿入して次の連続した ID を割り当てたい場合は、auto_increment 以外の列を使用し、新しいレコードを追加するときにこれを行います。

INSERT INTO myTable (id, ...) VALUES ( (SELECT MAX(id) + 1 FROM myTable), ...)

これをテストするのに便利なデータベースはありませんが、うまくいくと思います。しかし、テーブルが空のときに何が起こるかわかりません。また、これにより競合状態が発生する可能性があります。

于 2012-06-09T18:06:14.150 に答える
0

いいえ、データベース行を削除するときに、列にAUTO_INCREMENTアクティブな列がある場合、シーケンスから値が取得されます。3 を削除すると、シーケンスは常に 3+1 から始まります。たとえば、php myadmin から自動インクリメント値を表示\設定できます。どの DBMS を使用しているかはわかりませんが、オラクルを使用するとシーケンスを操作できます。

だからあなたはさまざまな方法を持っています。

  1. 複雑:挿入\削除すると、トリガーでシーケンスが更新されます
  2. idIdToShow、 の3 つの列を使用しますValue

idは今と同じで、autoinc で使用します。 idToShowまた、あなたが示すものです。挿入すると、テーブルに存在する行を数えて挿入できます(さまざまな方法があります)。

それが役立つことを願っています。

于 2012-06-09T18:11:00.030 に答える
0

あなたの問題はデータベース ID に関するものではなく、ID と行番号の違いを理解していないことです。彼らはお互いに何の関係もありません。ID の代わりにループ カウンター ("$i") を出力するだけです。

<?php
for ($i = 1; $i <= foo(); $i++) {
    print "<tr><td>{$i}</td><td>...</td></tr>\n";
}
?>
于 2012-06-09T19:28:24.330 に答える