2016-07-17 16 views
-2

Ich versuche einen Einkaufswagen zu erstellen, wo der Kunde wählen kann, ob er die Lieferung oder Abholung für seine Artikel abholen möchte. Der Standardpreis für die Lieferung beträgt 10 US-Dollar. Wie stelle ich den Standardwert für die Lieferung auf $ 10 ein, aber nur, wenn der Kunde die Lieferung wählt?Wie erstelle ich eine Nullspalte, aber mit dem Standardwert in SQL?

+0

Haben Sie versucht, es zu lösen? Einige SQL-Abfragen, die Spalten erstellen? – mihkov

Antwort

1

Ich denke, Sie eine berechnete Spalte bedeuten:

CREATE TABLE YourTableName 
( 
    .... 
, DeliveryCharge AS CASE 
     WHEN TYPE == 1 THEN 10 
     WHEN TYPE == 0 THEN NULL 
    END 
) 

Oder Sie einen Trigger erstellen, die den Wert auf INSERT/UPDATE auf die Tabelle legt:

CREATE TRIGGER TR_YourTableName_DeliveryCharge 
ON YourTableName 
FOR INSERT, UPDATE 
AS 
UPDATE YourTableName SET DeliveryCharge = CASE TYPE WHEN 1 THEN 10 ELSE NULL END 
go 

Vorausgesetzt Sie haben eine Spalte mit dem Namen haben TYPE, die angibt, ob es sich um eine Lieferung handelt oder nicht.

+0

Vielen Dank !!! –

0

sollten Sie den Standardwert auf 10 im SQL Server setzen und null übergeben (übergeben Sie nichts) an SQL-Server, wenn Kunde Lieferung wählt.

so wird der Teil der Logik in Ihrem Code und anderen Teil in SQL Server sein.

+0

Und pass 0, wenn die Abholung ausgewählt ist, oder? –

+0

verwendest du orm? Oder du machst jyst einen Insert-String in deinem Code? Wenn Sie einen Insert-String machen, übergeben Sie nichts, nicht einmal 0. – Arash

+0

Wenn Sie EF verwenden, ist C# ein starker Typ, Sie können NULL nicht als int, bigin oder .. übergeben. Es ist immer 0. In diesem Fall müssen Sie 10 in Ihrem Code übergeben. – Arash