ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于Primary key

关于Primary key

原创 Linux操作系统 作者:NinGoo 时间:2019-06-12 17:48:05 0 删除 编辑

呵呵,相信这个题目出来,大家都能答出来,这里引用一下google到的结果:

【IT168 名词解释】能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码。

除了唯一,我们知道,主键不能为NULL。对于单列主键,这两个条件比较好理解,但是对于组合主键,这个不能为NULL,究竟是主键列不能全是NULL呢,还是每个主键列都不能是NULL?


Oracle10g中的试验:

NING@ning> create table test(a int,b int,c int,d int);

Table created.

NING@ning> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B NUMBER(38)
C NUMBER(38)
D NUMBER(38)

NING@ning> alter table test add primary key(a,b,c);

Table altered.

NING@ning> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
A NOT NULL NUMBER(38)
B NOT NULL NUMBER(38)
C NOT NULL NUMBER(38)
D NUMBER(38)

可以看到,给表加上组合主键的时候,Oracle自动给每个主键列都加上了NOT NULL约束。

SQL Server 2005中的试验

use test

create table test(a int,b int,c int,d int);

alter table test add primary key(a,b,c);

Msg 8111, Level 16, State 1, Line 5
Cannot define PRIMARY KEY constraint on nullable column in table 'test'.
Msg 1750, Level 16, State 0, Line 5
Could not create constraint. See previous errors.

可以看到,SQL Server甚至不允许你在没有NOT NULL约束的列上建主键。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/193161/viewspace-50298/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 宁氏全球宗亲网
请登录后发表评论 登录
全部评论

注册时间:2004-12-07

  • 博文量
    200
  • 访问量
    129200