当前位置: 首页 > 面试题库 >

如何在存储过程中一次全部插入两个表?

葛承教
2023-03-14
问题内容

做一个学校的项目,所以任何帮助将是巨大的谢谢!

我有两个表-如何插入两个表中?因此,两个表都是链接的。

CustomerCID自动递增的主键调用第一个表

CREATE TABLE [dbo].[Customer](
    [CID] [int] IDENTITY(1,1) NOT NULL,
    [LastName] [varchar](255) NOT NULL,
    [FirstName] [varchar](255) NOT NULL,
    [MiddleName] [varchar](255) NULL,
    [EmailAddress] [varchar](255) NOT NULL,
    [PhoneNumber] [varchar](12) NOT NULL        
 CONSTRAINT [PK__CInforma__C1F8DC5968DD69DC] PRIMARY KEY CLUSTERED 
(

第二个称为的表Employment具有链接到父表的外键

CREATE TABLE [dbo].[Employment](
    [EID] [int] IDENTITY(1,1) NOT NULL,
    [CID] [int] NOT NULL,
    [Employer] [varchar](255) NOT NULL, 
    [Occupation] [varchar](255) NOT NULL,
    [Income] [varchar](25) NOT NULL,
    [WPhone] [varchar](12) NOT NULL,
 CONSTRAINT [PK__Employme__C190170BC7827524] PRIMARY KEY CLUSTERED 
(

问题答案:

您需要执行以下操作:

DECLARE @NewID INT

INSERT INTO Customer(LastName,FirstName,......) VALUES(Value1, Value2, .....)

SELECT @NewID = SCOPE_IDENTITY()

INSERT INTO Employment(CID,Employer,.....) VALUES(@NewID, ValueA,..........)

SCOPE_IDENTITY

返回插入到同一作用域的标识列中的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句位于相同的存储过程,函数或批处理中,则它们在同一范围内。



 类似资料:
  • 问题内容: 我为几个表创建触发器。触发器具有相同的逻辑。我将要使用一个通用的存储过程。但是我不知道如何处理 插入 和 删除的 表。 例子: 问题答案: 您可以使用表值参数存储触发器中插入/删除的值,并将其传递给proc。例如,如果您在proc中所需的全部是UNIQUE : 然后从触发器中传递插入/删除的ID,例如:

  • 问题内容: 这个问题已经在这里有了答案 : 如何在存储过程中一次全部插入两个表?[重复] (1个答案) 7年前关闭。 我有2张桌子,和: : : 我想编写一个存储过程,该过程将插入两个表中 更准确地说,是插入with ,它将返回用作的外键。 我进行了很多搜索,但未找到任何解决方案。 问题答案: 如下图所示。在这种情况下,您可以用来获取最后一个自动生成的ID以及此存储过程的作用域:

  • 问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电

  • 问题内容: 这与问题653714非常相似,但是对于MySQL而不是SQL Server。 基本上,我有一个复杂的选择,它是几个存储过程的基础。我想在存储过程中共享代码,但是,我不确定该怎么做。我可以这样做的一种方法是,使共享选择存储过程,然后从其他存储过程中调用该存储过程。我不知道如何使用嵌套存储过程的结果集。如果我可以将它们放在临时表中,则可以有效地使用结果,但是我不知道如何将它们放入临时表中。

  • 问题内容: 我想创建一个存储过程,以便在表“ dbo.Terms”中插入新行 但是在这里显示错误(@Term_en =’Cat’)不正确的语法有帮助吗? 问题答案: 我假设您要在表中插入cat等值;为此,您需要使用过程变量中的值。我不会将您的过程命名为与您的表相同的名称,否则会引起各种混乱;您可以找到一些用于命名标准的好资源(或来自Adventureworks的婴儿床) 并进行测试

  • 问题内容: 我在应用程序中使用MongoDB,需要在MongoDB集合中插入多个文档。我使用的版本是1.6 我在这里看到一个例子 http://docs.mongodb.org/manual/core/create/ 在里面 批量插入多个文档 部分 作者传递数组的位置。 当我尝试同样的操作时,但是为什么不允许这样做,请告诉我如何一次插入多个文档? 请让我知道这是什么方法,以便可以通过java一次插