如何创建空列但在SQL中使用默认值?

时间:2016-07-17 10:18:57

标签: sql sql-server ssms ssms-2012

我正在尝试创建一个购物车,客户可以选择是否需要交付或存储物品的提货。交货的默认价格为10美元。如何将交货的默认值设置为10美元,但仅限于客户选择交货?

2 个答案:

答案 0 :(得分:1)

我认为你的意思是计算列:

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

或者您可以创建一个触发器,在该表上设置INSERT / UPDATE的值:

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

假设您有一个名为TYPE的列,它指定它是否是一个传递。

答案 1 :(得分:0)

您应该在SQL Server中将默认值设置为10,并在客户选择Delivery时将null(不传递任何内容)传递给SQL Server。

所以逻辑部分将在您的代码中,而其他部分则在SQL Server中。