Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 如何使用存储过程插入现有行的coy,只需做一点小小的更改?_Sql Server - Fatal编程技术网

Sql server 如何使用存储过程插入现有行的coy,只需做一点小小的更改?

Sql server 如何使用存储过程插入现有行的coy,只需做一点小小的更改?,sql-server,Sql Server,有人能给我一些建议吗?我创建了一个如下表: CREATE TABLE [dbo].[Test] ( [TestId] INT IDENTITY (1, 1) NOT NULL, [ParentTestId] INT NOT NULL, [CreatedBy] NVARCHAR (128) NOT NULL, [Title] NVARCHAR (100) NOT NULL,

有人能给我一些建议吗?我创建了一个如下表:

CREATE TABLE [dbo].[Test] (
    [TestId]         INT            IDENTITY (1, 1) NOT NULL,
    [ParentTestId]   INT            NOT NULL,
    [CreatedBy]      NVARCHAR (128) NOT NULL,
    [Title]          NVARCHAR (100) NOT NULL,
    [TopicId]        INT            NOT NULL,
    [Release]        INT            DEFAULT ((1)) NOT NULL,
    [Identifier]     VARCHAR (25)   NULL
);
如何创建一个存储过程,该存储过程将获取表中的现有行并插入该行的副本


我希望能够提供一个新的[CreatedBy]作为存储过程的参数,并且对于新行,我希望将[ParentId]设置为复制该行的[TestId]的值

您可以使用
insert
语句,如:

insert into test(TestId, ParentTestId, CreatedBy, Title, TopicId, Release, Identifier)
    select TestId, @TestId, @CreatedBy, Title, TopicId, Release, Identifier
    from test
    where TestId = @TestId;
剩下的只是定义存储过程来解决这个问题

create proc abc
@createdby nvarchar(128)
as
insert into test (ParentTestId, CreatedBy, Title, TopicId, Release, Identifier)
select TestID, @CreatedBy, Title, TopicId, Release, Identifier from test
go
然后,您可以在select语句中添加where子句,以说明要选择哪些测试

select TestID, @CreatedBy, Title, TopicId, Release, Identifier from test
where testid  =  1

谢谢现在你解释一下就简单多了。