如何将复合唯一键添加到用户定义的表类型

时间:2016-07-28 11:26:38

标签: sql sql-server sql-server-2012 ddl user-defined-types

如何将复合唯一键添加到用户定义的表类型,如下所示:

CREATE TYPE [dbo].[jobdata] AS TABLE(
    [emp_num] [smallint] NULL,
    [job_date] [date] NULL,
    [year] [smallint] NULL,
    [job_code] [smallint] NULL,
    [order_year] [smallint] NULL,
    [order_ser] [decimal](5, 0) NULL,

)
GO

我希望emp_num,job_date是复合唯一键。

2 个答案:

答案 0 :(得分:3)

您无法更改UserDefined表类型,您需要删除并重新创建任何更改..

From MSDN ..

  

用户定义的类型在创建后无法修改,因为更改可能会使表或索引中的数据无效。要修改类型,您必须删除类型然后重新创建它,或者使用WITH UNCHECKED DATA子句发出ALTER ASSEMBLY语句。

以下是在UserDefined Table Type

上创建唯一约束的方法
CREATE TYPE test AS TABLE 
( col1 VARCHAR(50)
, col2 INT ,
 unique (col1,col2)
);

注意:我们不能命名约束,因此创建像普通方式一样的约束是无效的。

以下示例

 CREATE TYPE test AS TABLE 
    ( col1 VARCHAR(50)
    , col2 INT ,
    constraint test  unique (col1,col2)
    );

答案 1 :(得分:0)


ALTER TABLE jobdata ADD CONSTRAINT [Unique_emp_num_ob_date] UNIQUE (
    emp_num
    ,job_date
    )