0

からFOO.ID、VARCHAR - FOO.LABELは、私はSQLが「DFLT_LBL_」のようになりFOO.LABELについて計算DEFAULT VALUEを設定+ FOO.IDSQLデフォルト値を計算できますか?私は、列番号を持つテーブル<code>FOO</code>をお持ちの場合は

IEの記録とを持つことができる方法はありID = 1の場合はLABELが「DFLT_LBL_1」に設定され、IDのレコードの場合はLABELが「DFLT_LBL_2」に設定されます。

create view v_table as 
    select t.*, concat(label, id) as label 
    from foo t; 

これは、あなたがそれを変更することはできません。すべてのデータベースで動作します

+0

ご使用のデータベースに質問にタグを付けてください。 –

+2

これは 'before insert trigger'を使って行うことができます。デフォルト値は、挿入中にその列の値を指定しないと、nullの代わりにデフォルト値が挿入されることを意味します。したがって、あなたの場合、値はデフォルトではありません。それらは 'foo.id'に基づいて導出されなければなりません。これはトリガで行うことができます。 – Utsav

答えて

0

一つの方法は、ビューを使用することです。一部のデータベースで

create view v_table as 
    select t.*, coalesce(override_label, concat(label, id)) as label 
    from foo t; 

、あなたは計算列と似たような操作を行うことができます:あなたは、テーブル内の列がNULLデフォルトを有し、override_labelようなものをと呼ばれ、その後、ビューがあるかもしれない

alter table foo add label as (coalesce(override_label, concat(label, id))); 
+0

そうですが、システム全体がすでにこのテーブルを直接見ていますし、カスタム値に更新する機能も必要です。ヌルとして挿入された場合、このデフォルトパターンが必要です。私はトリガが最も良いと思うのは –

+0

@AdamJamesだと思います。 。 。それは明らかにあなたの決断です。 SQL Serverは計算された列をサポートしているため、トリガは維持するのが難しいことが分かります。 –

関連する問題