0

自動インクリメント フィールドを持つ SQL テーブルがあります。挿入が行われた後に「最後のエントリ」の ID を取得する方法を人々が尋ねたことを知っています。その方法を知っています。私がやりたいことは、自動生成されたフィールドを同じテーブルの 2 番目の列に複製することです。挿入コードを変更してこれを行うにはどうすればよいですか。

mysql_query("INSERT INTO `tags` (`tid`,`tagid`,`tagname`) VALUES('','INSERTED.ID','{$tagname}')");

これを行う理由は、2 つの行を互いに等しくできるようにしたいからです。IE で、2 つの異なるタグ (一意の ID が異なる) が同じタグ ID を持っている場合、「tagid」参照を別の場所で一意の識別子として使用し、それらを循環させることができます。また、どのタグが親タグであるかの知識を保持することもできます。これは、「tagid」と同じ「tid」を持つためです。

イベントにタグを付けるシステムがあります。しかし、私は時々タグのスペルを間違えます... そのため、すべての間違いを修正するのではなく、スペルミスのあるタグを結合して正しいタグと同じように処理できるようにすることで、システムのエラーを防止したいと考えています。

助けていただければ幸いです。

ありがとう、

4

3 に答える 3

0

フィールドを自動インクリメントに設定するには、テーブルを変更する必要があります。そして、何かを挿入すると増加すると思います。重複で呼び出されるこのステートメントもあります... http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2012-11-03T17:54:31.530 に答える
0

2 つのオプション:

1) LAST_INSERT_ID()mysql 関数を使用できますが、同じクエリではなく、2 番目のクエリで使用できます。

SELECT LAST_INSERT_ID();

2)テーブルに挿入トリガーを定義し、挿入すると、トリガーが「トリガー」され、トリガーでアクションが実行されます。

 CREATE TRIGGER tag_tid BEFORE INSERT ON tags
 FOR EACH ROW NEW.tid = NEW.id;

注: ショート クリエーター、リンクで詳細を参照してください。

于 2012-11-03T18:06:53.500 に答える
0

以前の ID を保存して、クエリ文字列で使用できます。

$previous_id = mysql_insert_id();

mysql_query("INSERT INTO `tags` (`tid`,`tagid`,`tagname`) VALUES('','$previous_id','{$tagname}')");
于 2012-11-03T17:55:10.013 に答える