我们的团队遇到了一个问题,即存储过程没有用数据填充每一列。存储过程从视图填充表。我们从视图中手动运行select语句,并且存在预期的数据。但是,当我们在表的中间运行Insert语句时,三个列填充了null。
Insert into Table2
Select * from View1
未填写特定列。我们测试了好几次。 未填充Table2.Num1,Table2.Num2,Table2.Num3的列。这些字段的所有值都为null。
Select * from View1
所有数据都存在。 View1.Num1,View1.Num2,View1.Num3。其中nvarchar(16)字段填充了数字数据。
Truncate Table2
Insert into Table2
Select * from View1
不填充的相同特定列。表的其余部分都很好。
Created Table3 based on Table2.
Insert into Table3
Select * from View1
工作正常,所有数据都在那里。
有人知道为什么这样的实例可能会发生吗?
要求提供额外信息
两个表之间的表结构是相同的。
有问题的特定列是varchar(16)
创建的table3是什么意思?
我们生成了Create table2语句,然后将其重命名为Table3并执行它。表3与table2相同。
表格结构
这是用于创建table2的语句。除了更改表名外,相同的create语句用于table3。视图具有相同的列数,具有相同的名称和定义。
CREATE TABLE table2(
[emp_id] [int] NOT NULL,
[company] [char](4) NULL,
[empno] [int] NOT NULL,
[termination_date] [datetime] NULL,
[rehire_date] [datetime] NULL,
[hire_date] [datetime] NULL,
[first_name] [varchar](128) NULL,
[last_name] [varchar](128) NULL,
[middle_name] [varchar](128) NULL,
[aka] [varchar](128) NULL,
[soc_sec_no] [char](9) NULL,
[birth_date] [datetime] NULL,
[sex] [char](1) NULL,
[race] [char](1) NULL,
[marital_status] [char](1) NULL,
[disability] [char](1) NULL,
[citizenship] [char](4) NULL,
[military] [char](1) NULL,
[union_code] [char](8) NULL,
[eeo_loc] [varchar](254) NULL,
[pers_status] [char](1) NULL,
[employ_type] [char](2) NULL,
[normal_hours] [decimal](12, 2) NULL,
[week_over_hours] [decimal](12, 2) NULL,
[adj_service_date] [datetime] NULL,
[shift] [char](8) NULL,
[visa_number] [char](30) NULL,
[visa_exp_date] [datetime] NULL,
[passport_number] [char](30) NULL,
[passport_exp_date] [datetime] NULL,
[process_cobra] [char](1) NULL,
[maiden_name] [varchar](128) NULL,
[Visa ID] [varchar](15) NULL,
[Visa Type Name] [varchar](16) NOT NULL,
[TA_Source] [varchar](1) NOT NULL,
[LW_ID] [varchar](15) NULL,
[LW_ID_Type] [varchar](18) NOT NULL,
[Taleo_ID] [varchar](254) NULL,
[Uses_Tobacco] [varchar](3) NOT NULL,
[Source_DB] [varchar](8) NOT NULL,
[UserID] [varchar](254) NULL,
[Num1] [varchar](16) NULL,
[Num2] [varchar](16) NULL,
[Num3] [varchar](16) NULL,
[AFF_EmpID] [int] NULL,
[MHC_EmpID] [int] NULL,
[daily_hours] [decimal](12, 2) NULL,
[Orig_Hire_Date] [datetime] NULL,
[WD_Continuous_Service_Date] [datetime] NULL,
[Hire_Date_PM] [datetime] NULL,
[CompanyServiceDate] [datetime] NULL,
[Prim_Order] [bigint] NULL,
[AD_Domain] [varchar](128) NULL,
PRIMARY KEY CLUSTERED
(
[empno] ASC
)
) ON [PRIMARY]
GO
答案 0 :(得分:3)
你应该明确说明哪些列去了哪里,绝对没有在Select *
上使用Insert
Insert into Table2(column1, column2, column3)
Select column1, column2, column3
from Table1
现在您知道Table1.Column1
映射到Table2.Column2