【发布时间】:2015-06-25 13:33:51
【问题描述】:
我想根据条件向定义的表变量添加复合主键约束:
DECLARE @tbl TABLE(Col1 int, Col2 int)
IF [myCondition]
ALTER TABLE @tbl ADD CONSTRAINT c PRIMARY KEY(Col1)
ELSE
ALTER TABLE @tbl ADD CONSTRAINT c PRIMARY KEY(Col1,Col2)
但是得到:
“@tbl”附近的语法不正确。
【问题讨论】:
-
您不能像那样有条件地执行 ddl 语句,更不用说您的 alter 语句与声明的表变量的名称不同。如果您想这样做,则必须使用动态 sql。
-
ALTER TABLE不允许用于表变量 -
你可以用一个老式的#temp 表来完成这个......
标签: sql sql-server sql-server-2008 primary-key