有2列合起来的唯一性约束吗?当同列有相同数据时可以插入,
2列同行的数据一样时,不可插入,请问要怎么写呢?谢谢!

解决方案 »

  1.   


    create table tb(col1 int,col2 int,info varchar(8),primary key(col1,col2))
    insert into tb
    select 1,1,'a'select * from tb
    /*
    col1        col2        info
    ----------- ----------- --------
    1           1           a(1 行受影响)
    */
    insert into tb
    select 1,1,'b'
    /*
    消息 2627,级别 14,状态 1,第 7 行
    违反了 PRIMARY KEY 约束 'PK__tb__3DD3211E'。不能在对象 'dbo.tb' 中插入重复键。
    */
    select * from tbinsert into tb
    select 1,2,'b'select * from tb
    /*
    col1        col2        info
    ----------- ----------- --------
    1           1           a
    1           2           b(2 行受影响)
    */
    drop table tb
      

  2.   

        建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。      1.在数据库提供的GUI环境中建立(以SQL7为例)。    输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。    2.通过SQL语句执行建立。又分两种,一是在建表语句中直接写,二是建表之后更改表结构。    在建表语句中直接写:      Create Table 表名 (字段名1 Int Not Null,
                        字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
                        字段名3…………
                        字段名N………… )    建表之后更改表结构:     CREATE TABLE 表名 (字段名1 Int Not Null,
                           字段名2 nvarchar(13) Not Null
                           字段名3…………
                           字段名N…………)
        GO    ALTER TABLE 表名 WITH NOCHECK ADD 
        CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED 
         (
              [字段名1],
              [字段名2]
         )
        GO
      

  3.   

    这样啊,oracle是否也没有复合唯一性约束
      

  4.   

    楼主到底要问MSSQL还是ORACLE ???
    ORALCE:create table tb( 
    father char(10),
    son char(10),
    quantity integer not null,
    primary key (father, son)
    );
      

  5.   

    用来复合主键后,会影响对id列的查询速度吗?平时主键都用在id列上
      

  6.   

    Quote=引用 5 楼 acherat 的回复:    建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。      1.在数据库提供的GUI环境中建立(以SQL7为例)。    输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。    2.通过SQL语句执行建立。又分两种,一是在建表语句中直接写,二是建表之后更改表结构。    在建表语句中……
      

  7.   


     Create Table 表名 (字段名1 Int Not Null,
                        字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
                        字段名3…………
                        字段名N………… )    建表之后更改表结构:     CREATE TABLE 表名 (字段名1 Int Not Null,
                           字段名2 nvarchar(13) Not Null
                           字段名3…………
                           字段名N…………)
        GO    ALTER TABLE 表名 WITH NOCHECK ADD 
        CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED 
         (
              [字段名1],
              [字段名2]
         )
        GO