【问题标题】:shopping cart database design and the flow of putting the orders into the tables购物车数据库设计和将订单放入表格的流程
【发布时间】:2011-06-25 03:32:19
【问题描述】:

我正在 SQL Server 2005 中创建一个数据库来存储所接受的订单。

table [customers] : 客户详细信息表的主键是 customer_ID,它将是一个身份自动增量

table [orders]:包含 3 列,[orderid](也是 pk),[product_id],[quantity]

table [linking] : 包含 2 列,[customerid](作为外键),[orderid](也是外键)

订购流程: 当客户结账时,客户的详细信息将存储到表[customers] 中,其中将生成唯一的 customer_ID。

接下来,使用该 customer_ID,购物车中的产品将存储到 table[orders] 中。

现在,问题是:如何从表 [customers] 中检索自动生成的 customer_ID?假设很多用户同时签出?将客户的详细信息插入表[customer]后,我必须使用表[linking]中的customer_ID与orderid配对。

【问题讨论】:

    标签: asp.net database


    【解决方案1】:

    编写一些 SQL 存储过程来为您完成这项工作。您可以使用 ADO.NET 从您的 Web 应用程序代码中调用它。

    1. 调用过程CreateCustomer。它会创建您的 CustomerID。
    2. 调用procCreateOrderForCust
    CREATE PROC CreateCustomer 
      @Name varchar(100),
      @Address varchar(100)
    AS
       DECLARE @CustomerID int; 
    
       INSERT INTO CUSTOMER([Name],[Addr]) VALUES (@Name, @Addr);
    
       SELECT @CustomerID = SCOPE_IDENTITY();
    
       RETURN @CustomerID;
    
    ...
    CREATE PROC CreateOrderForCust
      @CustomerID int,
      @SKU int,
      @Qty int
    AS
       .....
    

    【讨论】:

    • 我已经解决了。实际上我只是将 sql 传递到命令文本中。我使用@@identity 而不是 scope_identity()。您认为如果很多人同时下订单,返回的订单身份将是属于该特定买家的实际身份吗?
    • @angus 我自己,我总是使用 scope_identity,而不是 @@identity。你永远不知道未来什么时候会出现新的触发器。
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多