使用左连接向行添加行(SQL Server新增功能)

时间:2014-12-09 13:20:48

标签: sql-server sql-server-2012 views sql-server-express

背景/免责声明:我已经在MS Access中开发了数年的数据库应用程序,所以我已经了解了数据库设计等基础知识,但只使用了SQL服务器大约3个月。

我正在重建一个最初在MS Access到SQL服务器中构建的数据库(但它将保留MS-Access前端),其目的是跟踪可回收包装的库存我们回到我们的供应商。

我想要一个视图,让我们的仓库能够快速查看我们目前拥有的所有库存,选择每个项目的一些数量并运行一个可以从我们的系统中删除该库存的交易(以及打印)一个装箱单,但我知道我将如何处理)

现在我有一个项目表,我们可以简化以下内容:

CREATE TABLE Products
  ( ID int PRIMARY KEY NOT NULL,
    ProductName nvarchar(64),
    < Other Details Multiple Fields >,
    InvQty int NOT NULL CONSTRAINT "df_InvQty" DEFAULT (0) 
  )

我想创建一个加入此表的视图,其中包含当前用户选择的货件数量,因此我创建了另一个表来存储当前用户的待处理货件

CREATE TABLE PendingShipments
  ( UserName nvarchar(255) NOT NULL
      CONSTRAINT "df_UserName" DEFAULT (Suser_Sname()),
    ProductID int NOT NULL,
    SelectedQty int NOT NULL,
    CONSTRAINT "pk_PendingShipments" PRIMARY KEY (UserName,ProductID)
    CONSTRAINT "fk_ProductID" FOREIGN KEY ("ProductID") REFERENCES "Products" ("ID")
  )

接下来我创建了一个视图     SELECT P.ID,P.ProductName,P.InvQty,S.SelectedQty       FROM Products AS P LEFT JOIN PendingShipments AS S ON P.ID = S.ProductID       WHERE S.UserName = Suser_Sname();

我知道如果我在MS Access中完成相同的操作,我会在表PendingShipments中自动创建一条新记录,如果我要填写SelectedQuantity中的值。但是当在SSMS中尝试htis时,我得到了错误

&#39;自上次检索“结果”窗格以来,数据已更改。您想立即保存更改吗? (乐观并发控制错误)&#39;

但我是这个数据库中唯一的人,是否有鬼改变数据?当我点击“是”&#39;提交更改我得到错误

&#39;没有更新行。自上次检索数据以来,已更新或删除更新的行。&#39;

任何人都可以帮帮我吗?如果我在这里尝试做的事情本质上是愚蠢的,那么我对主要的设计变化持开放态度,因为我还处于早期开发阶段并且正在努力将每一个标记烧掉并重新开始。

0 个答案:

没有答案