【发布时间】:2016-07-17 10:18:56
【问题描述】:
我正在尝试创建一个购物车,客户可以在其中选择是否需要送货或商店取货。交货的默认价格为 10 美元。如何将交货的默认值设置为 10 美元,但仅限客户选择交货时?
【问题讨论】:
-
你试过解决了吗?一些产生列的 SQL 查询?
标签: sql sql-server ssms ssms-2012
我正在尝试创建一个购物车,客户可以在其中选择是否需要送货或商店取货。交货的默认价格为 10 美元。如何将交货的默认值设置为 10 美元,但仅限客户选择交货时?
【问题讨论】:
标签: sql sql-server ssms ssms-2012
我认为您的意思是计算列:
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 的列,它指定它是否是交货。
【讨论】:
您应该在 SQL Server 中将默认值设置为 10,并在客户选择 Delivery 时将 null(不传递任何内容)传递给 SQL Server。
所以逻辑部分将在您的代码中,而其他部分在 SQL Server 中。
【讨论】:
null 值,例如选择存储拾取(无充电)时。我是说你应该澄清在那种情况下你会做什么,因为这是答案的另一半。
null 将插入null,而不是默认值。因此,您必须从语句中完全省略该列,或者改为传递 default。