Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中,参考表B中的最新记录更新表a中的列_Sql_Sql Server - Fatal编程技术网

在SQL Server中,参考表B中的最新记录更新表a中的列

在SQL Server中,参考表B中的最新记录更新表a中的列,sql,sql-server,Sql,Sql Server,我需要定期在两个表中插入新数据: 表mstr\u project,其中每次我插入一条项目记录(1行)。我有一个标识列Project\u ID,因此每次插入新的项目记录时,都会自动生成一个项目ID 表tbl_ProjectData,其中每次我为新项目插入200行新数据时,我都会添加到表mstr_project 我的问题是-如何每次更新tbl_ProjectData中的projectd列,以便其新记录采用表mstr_Project中新生成的ProjectID?这意味着每次,表tbl_ProjectD

我需要定期在两个表中插入新数据:

mstr\u project
,其中每次我插入一条项目记录(1行)。我有一个标识列
Project\u ID
,因此每次插入新的项目记录时,都会自动生成一个项目ID

tbl_ProjectData
,其中每次我为新项目插入200行新数据时,我都会添加到表
mstr_project


我的问题是-如何每次更新
tbl_ProjectData
中的
projectd
列,以便其新记录采用表
mstr_Project
中新生成的
ProjectID
?这意味着每次,表
tbl_ProjectData
中的200条新记录都将采用表
mstr_project
中生成的相同
ProjectID

只需使用
Scope\u Identity

DECLARE @ProjectID int;
INSERT dbo.mstr_project (Name) VALUES ('My New Project');
SET @ProjectID = Scope_Identity();

INSERT dbo.tbl_ProjectData (ProjectID, Value)
SELECT @ProjectID, Value
FROM #ProjectDataValues;
您还可以使用
OUTPUT
子句(SQL Server 2005及更高版本)捕获插入的值:

对于第二个代码段,请注意插入到项目表中的行数——如果一次插入多行,则必须执行不同的操作,以便为进入
ProjectData
表的每一行选择正确的项目

注意:请停止使用“tbl_u2;”作为前缀命名表。总有一天你会让别人从关于你的恶梦中解脱出来

CREATE TABLE #NewProjectIDs (
   ProjectID int NOT NULL PRIMARY KEY CLUSTERED
);

INSERT dbo.mstr_project (Name)
OUTPUT ProjectID INTO #NewProjectIDs
SELECT 'My New Project';

INSERT dbo.tbl_ProjectData (ProjectID, Value)
SELECT N.ProjectID, V.Value
FROM
   #NewProjectIDs
   CROSS JOIN #ProjectDataValues V;