2016-08-22 4 views
-1

もう一度お詫び申し上げます。笑:)別のT-SQL文に基づいて列を自動入力

私は、同様の質問で回答を見ていますが、まだそれほど有用ではありません。私は1つの列を埋めるautoに私のテーブルの上にスキーマを変更したい

enter image description here

は、ここに私の場合です。

私が理解しているのは、更新機能は値のみであり、将来新しい値が入力されるときは適用されないということです。

グレードに合わせてGnameを設定できるようにします。私は初心者または新規の場合は1、標準の場合は2、3-中間の場合は4-エキスパート、エキスパートの場合は2-を持つことができます。

誰か助けてもらえますか?適切な文書に向けて私に指示してください。

ありがとうございました

答えて

3

これは通常ルックアップテーブルを使用して行います。

グレードID 1,2,3,4と名前を持つGname用のテーブルを追加しておきましょう。そして、それをあなたのクエリーに列として追加したいときは、あなたのgnameテーブルをあなたのテーブルのIDと結合することでそれを行います。あなたがあなたのテーブルを変更し、それを追加することができ、計算列を制定したい場合

は、しかし、SQLサーバー2008年から計算列https://msdn.microsoft.com/en-us/library/ms188300(v=sql.105).aspx

もあります。

ALTER TABLE TableName 
ADD ComputedColumnName AS (CASE WHEN Grade = 1 THEN 'novice' WHEN Grade = 2 THEN 'standard'.....END) 

いくつかのプログラマが使用するさらに別の方法は、どこでも、データベース内のルックアップを置くのではなく、翻訳を処理するために、そのアプリケーション層で列挙を使用しないことです。

最初の方法は、データベースの記憶領域の要求が少なく、名前を変更したり、追加のgnamesを追加するためにスキーマ/テーブル定義の変更を必要としません。さらに、データの整合性がさらに高まります。なぜなら、列挙が非常に重要な電子商取引サイトを混乱させ、プログラマーに多くの頭痛をかけてデバッグしようとしているからです。

+0

@ Herc01はい、最初の方法を使用してください。将来の痛みを和らげるためにデータベースの正規化についてお読みください。 –

関連する問題