2

ID、Comp_Id、Cont_Id、および Comp_Cont_Id の 4 つの列を持つ SQL データベースのテーブルを取得しました。ID、Comp_Id、Cont_Id 列の値は手動で入力され、Comp_Cont_Id 列の値は、ID、Comp_Id、Cont_Id 列の値を連結することによって自動的に生成されます。

たとえば、(201, 301, 401) を (ID, Comp_Id, Cont_Id) にそれぞれ入力すると、値 201_301_401 がテーブルの Comp_Cont_Id 列に自動生成されます。

それを達成する方法はありますか?もしそうなら教えてください。

4

2 に答える 2

4

MS SQL は計算列をサポートしています。構文はこの同様の質問に記載されています。

DROP TABLE test99
CREATE TABLE test99 (
    id int,  
    comp_id int,  
    cont_id int,
    comp_cont_id AS cast(id AS varchar) + '_' + cast(comp_id AS varchar) + '_' + cast(cont_id AS varchar)
) 

INSERT INTO test99 (id, comp_id, cont_id)
VALUES (201, 301, 401)

SELECT * FROM test99
于 2011-04-05T07:10:02.230 に答える
3

値の入力に PHP または ASP.NET を使用していますか? ユーザーがテーブルに直接キー入力している場合は、トリガーを使用して最後の値を設定してみてください。

ただし、Comp_Cont_Id は派生フィールドと呼ばれるものです。その値は他のフィールドに依存します。派生フィールドの例としては、レコードの総数、価格の平均などがあります。フィールドを格納するよりも、その場で動的に作成する方が適切です。もちろん、パフォーマンスが重要な場合など、これには例外があります。

于 2011-04-05T06:59:54.890 に答える