通过使用以下查询,将创建临时表testingTemp
,并且列的定义取决于oriTable
。(我猜)
Select a.ID AS [a],
b.ID AS [b],
c.ID AS [c]
INTO #testingTemp
FROM
oriTable
我的第二个问题如下:
Insert into #testingTemp (c)
Select z.ID AS [c]
FROM
oriTable
现在当我执行第二个查询时,SQL Server投诉
Cannot insert the value NULL into column 'a' , table 'tempdb.dbo.testingTemp...blabla
我是否知道如何在不更改oriTable
结构的情况下解决此问题?
答案 0 :(得分:5)
使用
SELECT ID + 0 AS [a],
ID + 0 AS [b],
ID + 0 AS [c]
INTO #testingTemp
FROM oriTable
通过表达式计算的列的可为空性几乎总是假定为NULL
而不是NOT NULL
答案 1 :(得分:0)
试试这个:
ALTER TABLE #testingTemp ALTER COLUMN [a] int NULL
答案 2 :(得分:0)
试试这个:
在第一次插入期间尝试将具有约束(主键或非空)的列转换为各自的数据类型。
Select convert(int,a.ID) AS [a],
b.ID AS [b],
c.ID AS [c]
INTO #testingTemp
FROM
oriTable
因为我们使用了convert函数,所以约束结构(主要或非空约束)不会复制到临时表。 现在你可以轻轻地触发第二个insert语句,它将执行而不会出现任何错误。
Insert into #testingTemp (c)
Select z.ID AS [c]
FROM
oriTable