0

新しい行を挿入するときに、あるフィールドの値 (自動インクリメント) を別のフィールドの値に使用したいと考えています。

新しい行を挿入すると製品 ID が自動的に生成されますが、HTML リンクを動的に生成する別のフィールドでその製品 ID を使用したいと考えています。

例えば

ID | リンク

1 | products.php?id=*

(products.php?id=* は明らかに html の 'a' タグで囲まれます)

挿入時に * が表示される場所に ID 値が必要です。

プロセスが手動ではないので、これを行う方法はありますか?

4

2 に答える 2

0

この解決策を持つことは最善の考えではないようです。リンクは常にこの形式になりますか? 追加のパラメーター (つまり、グループ ID) が必要ないという確信がありますか? あなたがやろうとしているのは、実際には同じデータを 2 つの異なる形式 (1 つは id で、もう 1 つは一意の href) で保存することです。

これは、データの不一致などの他の問題につながります (つまり、バグのあるソフトウェアが id=123 で行を作成し、'products.php?id=666' としてリンクする可能性があります。データの一貫性を損なう可能性のあるレコードで呼び出されている更新ステートメント。

一般的に言えば、ID に true のソースが 1 つあることを確認し、常にこの true のソースを参照して、この ID で中継する他のデータを動的に生成します。したがって、あなたの例では、データベースから再試行された ID に基づいてリンクを動的に生成する関数を用意することをお勧めします。つまり、さまざまなフレームワークにそれを行うためのメソッドが組み込まれているため (Groovy、Spring、PHP フレームワークもあるに違いありません)、リンクを生成する独自の単純な関数を作成することもできます (つまり、この疑似コードのように:

getProductLink (int id) { printf ("product.php?id=%d",id) ;}

このようにすると、URL構造を変更することにした場合、データベース内のデータを変更する必要はありません(そして、あなたはそうします;))。PS: 本当にデータベースからリストを取得したい場合は、提供された ID に基づいて動的にリンクを生成する mysql 関数を作成してください。

将来あなたに多くの苦痛を与えるために、すべての善意を持って

于 2013-02-09T23:23:35.027 に答える
0

トリガーを使用できます

delimiter //

    CREATE TRIGGER trigger_name BEFORE INSERT ON products
    FOR EACH ROW 
    BEGIN
        SET NEW.link = CONCAT(NEW.link, NEW.id);
    END;//

delimiter ;
于 2013-02-09T15:16:11.713 に答える