我想创建一个与现有表相同的新表以及一些其他列。在简单的情况下,我们将做:
Select * INTO table2 from table1 where 1=0
但我也想添加一些新列。我们可以一步完成,即不使用ALTER TABLE
作为下一步吗?
答案 0 :(得分:3)
是的,但是为了指定数据类型,您应该将null转换为所需的类型。
bindToController: true,
列约束/默认值需要通过UPDATE TABLE语句单独添加,但它们可能不是您要执行的操作所必需的。
列类型当然是。
答案 1 :(得分:1)
您能否在SELECT
声明中明确列出新列?他们需要填充还是只有空场?像
Select *, cast(NULL as type) as NewColumn1, cast(NULL as type) as NewColumn2... INTO table2 from table1 where 1=0
虽然您可能必须列出原始表中的所有单个列,而不是*
。
答案 2 :(得分:0)
你可以在下面这样做:
@RequestMapping(value = Connectors.CONNECTOR_HEARTBEAT, method = RequestMethod.POST)
public void doSomething(@RequestBody List<Message> messages, HttpServletResponse response) {
int code = (messages!=null && !messages.isEmpty()) ? HttpServletResponse.SC_OK
: HttpServletResponse.SC_NOT_FOUND;
if (code != HttpServletResponse.SC_OK) {
response.sendError(code, res);
return;
}
java.io.PrintWriter wr = response.getWriter();
response.setStatus(code);
wr.print(res);
wr.flush();
wr.close();
// Now it it time to do the long processing
...
}
答案 3 :(得分:0)
是的,你可以这样做
选择*,&#39; abc&#39;从dbo.oldtable到dbo.newtable的城市,其中1 = 0
答案 4 :(得分:0)
如果您想添加更多columns
,请在select
声明中添加:
例如:
select
t.*,
12 as ID,
'ABCD' as Name
INTO table2
from table1 as t
where 1 = 0
在creation
执行execute sp_columns 'table2'
之后,按预期查看表格的定义
此处Name
列的长度为varchar
的{{1}}类型。