我想用另一个表填充一个表(之后将被截断),但是当我使用此表时,它只是一次拍摄,因为SQL表示该表已经存在。我只想在该艾伯塔省表中添加行。
USE [DATAWAREHOUSE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[prcAlberta] As
(
Select *
INTO AlbertaData_Storing
FROM dbo.AlbertaData_import
where name is not null )
truncate table AlbertaData_import
GO
答案 0 :(得分:0)
发生错误是因为命令将所有内容从另一个表插入到“ TableName”中,从而创建了具有模式的新表。因此,需要像这样更改查询。
USE [DATAWAREHOUSE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[prcAlberta]
AS
BEGIN
/* If the table not exist then create a blank table */
IF OBJECT_ID('AlbertaData_Storing') IS NULL
BEGIN
SELECT * INTO AlbertaData_Storing
FROM dbo.AlbertaData_import WHERE 1 <> 1
END
/*
Better to use required column only Like :
INSERT INTO AlbertaData_Storing(Column1,Column2,Column3,...)
SELECT Column1,Column2,Column3,... FROM dbo.AlbertaData_import
WHERE Name IS NOT NULL
*/
INSERT INTO AlbertaData_Storing
SELECT * FROM dbo.AlbertaData_import
WHERE Name IS NOT NULL
TRUNCATE TABLE AlbertaData_import
END
GO
答案 1 :(得分:0)
我建议先删除表格,然后插入其中:
ALTER Procedure [dbo].[prcAlberta] A
as
begin
begin try
drop table AlbertaData_Storing;
end try
begin catch -- do nothing
end catch;
select *
into AlbertaData_Storing
from dbo.AlbertaData_import
where name is not null
truncate table AlbertaData_import
end;
GO