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
谢谢现在你解释一下就简单多了。