如何创建一个空列但在 SQL 中使用默认值?
How do I create a null column but with default value in SQL?
我正在尝试创建一个购物车,客户可以在其中选择是要送货还是商店取货。交货的默认价格为 10 美元。如何将默认运费设置为 10 美元,但仅在客户选择送货时才有效?
您应该在 SQL 服务器中将默认值设置为 10,并在客户选择交货时将 null(不要传递任何内容)传递给 SQL 服务器。
所以逻辑部分将在您的代码中,而其他部分在 SQL 服务器中。
我想你的意思是计算列:
CREATE TABLE YourTableName
(
....
, DeliveryCharge AS CASE
WHEN TYPE == 1 THEN 10
WHEN TYPE == 0 THEN NULL
END
)
或者您可以创建一个触发器,在 INSERT/UPDATE 上设置 table 上的值:
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 的列,指定它是否是交付。
我正在尝试创建一个购物车,客户可以在其中选择是要送货还是商店取货。交货的默认价格为 10 美元。如何将默认运费设置为 10 美元,但仅在客户选择送货时才有效?
您应该在 SQL 服务器中将默认值设置为 10,并在客户选择交货时将 null(不要传递任何内容)传递给 SQL 服务器。
所以逻辑部分将在您的代码中,而其他部分在 SQL 服务器中。
我想你的意思是计算列:
CREATE TABLE YourTableName
(
....
, DeliveryCharge AS CASE
WHEN TYPE == 1 THEN 10
WHEN TYPE == 0 THEN NULL
END
)
或者您可以创建一个触发器,在 INSERT/UPDATE 上设置 table 上的值:
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 的列,指定它是否是交付。