SQL Server无硬编码值插入:创建订单及添加商品
实现方案
全程不硬编码的核心是通过查询动态获取用户、商品的关联ID,用SQL内置函数处理日期和新订单ID,完整脚本如下:
-- 声明变量存储需要用到的ID DECLARE @UserId INT, @ProductId INT, @NewOrderId INT; -- 根据用户名获取用户ID SELECT @UserId = UserId FROM Users WHERE UserName = 'John Cena'; -- 根据商品名获取商品ID SELECT @ProductId = ProductId FROM Products WHERE ProductName = 'Ice Cream'; -- 插入今日已支付的订单 -- 若只需日期部分用CAST(GETDATE() AS DATE),需完整时间则直接用GETDATE() INSERT INTO Orders (UserId, OrderDate, IsPaid) VALUES (@UserId, CAST(GETDATE() AS DATE), 1) OUTPUT INSERTED.OrderId INTO @NewOrderId; -- 捕获刚生成的订单ID -- 为该订单添加商品,数量默认1,可按需调整 INSERT INTO OrderItems (OrderId, ProductId, Quantity) VALUES (@NewOrderId, @ProductId, 1);
关键说明
- 用
CAST(GETDATE() AS DATE)自动获取今日日期,无需手动硬编码日期值; - 通过
OUTPUT INSERTED.OrderId直接获取新插入的订单ID,避免二次查询或硬编码; - 用户ID、商品ID均通过表查询动态获取,彻底杜绝硬编码数值;
- 若
IsPaid为BIT类型,1代表已支付,符合SQL Server布尔类型的取值规则。
内容的提问来源于stack exchange,提问作者Dulanjana Gamage
相关产品推荐
相关产品推荐

