【问题标题】:SQL Server: creating table variable, error in primary key constraint definitionSQL Server:创建表变量,主键约束定义错误
【发布时间】:2011-06-18 11:25:32
【问题描述】:

我正在尝试使用主键创建表变量。这两种说法有什么区别?为什么第一个不起作用?

--This does not work
declare @tabvar table (
    rowid int identity(1, 1) not null,
    var1 int null,
        constraint PK_tabvar_rowid primary key clustered (rowid)
)

--This works
declare @tabvar1 table (
    rowid int identity(1, 1) not null primary key clustered,
    var1 int null
)

【问题讨论】:

    标签: sql-server sql-server-2008 indexing


    【解决方案1】:

    当你创建一个像这样的表时:

    CREATE TABLE tabvar (
    rowid int identity(1, 1) not null,
    var1 int null
       , constraint PK_tabvar_rowid primary key clustered (rowid))
    

    您创建一个名为 PK_tabvar_rowid 的单独 SQL 对象。

    这种方法更适用于上述永久表,因为您专门命名了约束并且它独立于表对象而存在。

    您可以使用以下表格:

     CREATE TABLE tabvar (
    rowid int identity(1, 1) not null primary key,
    var1 int null)
    

    但这会创建一个随机命名的约束,这使得未来的管理更加困难。

    对于表变量(瞬态)——你不能有一个独立的约束——所以你必须使用内联主键定义。

    【讨论】:

      【解决方案2】:

      看起来这种行为在 BOL 中有很好的记录。查看DECLARE TABLE VariableCREATE TABLE 的语法定义。

      【讨论】:

        【解决方案3】:

        用于创建表变量的CREATE TABLE (Transact-SQL)DECLARE @local_variable (Transact-SQL) 之间的语法存在差异。不能使用第一条语句的语法来创建变量表。

        【讨论】:

          【解决方案4】:

          您使用的语法是用于CREATE TABLE,而不是表变量。

          CREATE TABLE tabvar (
              rowid int identity(1, 1) not null,
              var1 int null
                 , constraint PK_tabvar_rowid primary key clustered (rowid)
          )
          

          如预期的那样,上述工作正常。但是,如果您查看 declaring table variables 的语法,您会发现可以做什么和不可以做什么:

          declare @tabvar table (
              rowid int identity(1, 1) not null,
              var1 int null,
                 primary key (rowid)
          )
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-06
            • 1970-01-01
            • 1970-01-01
            • 2021-04-11
            • 2023-03-07
            • 2016-02-01
            • 2012-01-09
            相关资源
            最近更新 更多