2017-08-10 13 views
0

をカスタムデフォルト値の生成機能を指定します。私は次の表を作成していますSQL Serverで

CREATE TABLE [dbo].[Symptoms] 
(
    [Id]   INT   NOT NULL, 
    [description] NVARCHAR (128) NOT NULL, 
    [imgPath]  NVARCHAR (128) NOT NULL, 
    [diseaseId] INT NOT NULL, 
    [weight] FLOAT NOT NULL, 

    PRIMARY KEY CLUSTERED ([Id] ASC, [diseaseId] ASC) 
); 

私が何をしたいのか[imgPath]列のデフォルト値を作成することです。私はDEFAULT newid()と他の方法について知っていますが、カスタム生成メソッドが必要です。

具体的には、[imgPath]$"/resources/Images/{Id}_symptom.jpg"に設定します。ここで、Idはその特定の行のIDです。

この機能はどこで指定できますか?

ありがとうございます!デフォルトの制約を作成してください既定値を追加するには

答えて

1

ALTER TABLE Symptoms 
    ADD CONSTRAINT Symptoms_imgPath 
    DEFAULT (('/resources/Images/{Id}_symptom.jpg')) FOR imgPath 

他の方法は、このように、挿入時にデフォルト値を挿入することです

更新
SQL Serverの列の既定値は、他の列のデータを使用して構成することはできません。今

CREATE TABLE [dbo].[Symptoms] (
    [Id]   INT   NOT NULL, 
    [description] NVARCHAR (128) NOT NULL, 
    [UserDefinedImgPath]  NVARCHAR (128) NULL, 
    [imgPath] AS COALESCE(UserDefinedimgPath, '/resources/Images/' + CAST(Id AS NVARCHAR(13)) +'_symptom.jpg') PERSISTED, 
    [diseaseId] INT NOT NULL, 
    [weight] FLOAT NOT NULL, 
    PRIMARY KEY CLUSTERED ([Id] ASC, [diseaseId] ASC) 
); 

あなたが挿入または更新上の画像ページを指定したい場合は、: 何をすることができますすることで、画像のパスを指定して、計算列の宣言の一部としてそれを使用するために別の列を追加することですUserDefinedImgPath列を使用します。デフォルト値を使用する場合は、そのままnullのままにしてください。
イメージパスを選択するときは、必ず計算カラムを使用してください。

まず答え
imgPathためcomputed columnを使用してください:あなたは計算列を更新することはできません、また、あなたがそれに特定の値を挿入することができます

CREATE TABLE [dbo].[Symptoms] (
[Id]   INT   NOT NULL, 
[description] NVARCHAR (128) NOT NULL, 
[imgPath] AS '/resources/Images/' + CAST(Id AS NVARCHAR(13)) +'_symptom.jpg' PERSISTED, 
[diseaseId] INT NOT NULL, 
[weight] FLOAT NOT NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC, [diseaseId] ASC) 
); 

注意を。

+0

これを実装して、指定された値がnullの場合にのみ関数が実行されるようにする方法はありますか?デフォルトのフォールバック? –

+0

私の編集した答えを見てください。 –

0

は、SQL Serverの例は以下の通りです:

INSERT INTO Symptoms 
    SELECT '/resources/Images/{Id}_symptom.jpg' 
    FROM symptoms 
    WHERE id = NEWID() 
+0

トップソリューションは私が望むように文字列を補間するとは思えません...文字列リテラルをデフォルト値に設定するだけです。私は{Id}を特定の症状のIDで置き換えることを願っています –

+0

@Varunあなたは '{Id}'を新しいIDで置き換えたいですか? –

+0

はい - {Id}はその行の症状のIDでなければなりません –

関連する問題