在已建有的表中插入主键约束:
(1)
ALTER TABLE priduct1
WITH CHECK ADD 
CONSTRAINT pro_id PRIMARY KEY 
CLUSTERED (product_id)
go
(2)
ALTER TABLE shiyan1
WITH CHECK ADD 
CONSTRAINT pu_id_primary PRIMARY KEY (pu_id)
go
(3)
ALTER TABLE shiyan2 ADD 
CONSTRAINT pu_id PRIMARY KEY (pu_id)
go
(4)
alter table shiyan
add primary key (pu_id)
go   以上四种增加主键的方法中 有什么区别,请高手帮忙分析下,谢谢! 
   请最好以关键字的字眼却别来解析!

解决方案 »

  1.   

    前面两个是在有CHECK约束的情况下加主键,后面没有,前面的第一个是加聚集的主键后面的只是加主键,
      

  2.   

    CONSTRAINT约束
    CLUSTERED 聚集
      

  3.   

    前面两个是在有CHECK约束的情况下加主键, 后面没有, 前面的第一个是加聚集的主键 后面的只是加主键,
      

  4.   

    实际上我是不懂 聚集是什么,以及怎么用,还有with check 为啥要加一个WITH?
    大家想一想,如果我知道这个语法怎么用,那么我也就能区分出来了,呵呵~
    还请高手帮忙解析下,关于这个问题 书上没有,是我自己从第一个代码上面分离出来的!
      

  5.   


    WITH CHECK | WITH NOCHECK指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。WITH CHECK 和 WITH NOCHECK 子句不能用于 PRIMARY KEY 和 UNIQUE 约束。如果不想用新 CHECK 或 FOREIGN KEY 约束对现有数据进行验证,请用 WITH NOCHECK,除了个别情况,不建议这样使用。新约束将在以后的所有更新中生效。任何在添加约束时由 WITH NOCHECK 抑制的约束违规都可能导致将来的更新失败,如果这些更新操作要更新的行中包含不符合约束条件的数据。查询优化器不考虑用 WITH NOCHECK 定义的约束。将忽略这些约束,直到使用 ALTER TABLE table CHECK CONSTRAINT ALL语句重新启用这些约束为止。
      

  6.   


    我记得是创建 check 和 foreign key 约束时使用 with check 选项,用于在创建约束时验证表中原有的数据是否满足约束的条件,如果不满足会禁止创建约束。对应的是 with nocheck 选项,表示在创建约束时不验证表中原有的数据。
      

  7.   


    老兄辛苦了 不过 复制了一大堆东东,貌似还是没有看见讲 集类CLUSTERED这个关键字的代码
      

  8.   

    clustered是聚集索引,每个表中只能有一个聚集索引.所以,创建聚集索引需要特别写出来,不写的话,默认是不会自动创建聚集索引的.
      

  9.   

    默认情况下,创建 primary key 的同时会创建聚集索引(clustered),创建 unique 约束的同时会创建非聚集索引(nonclustered)。也可以在创建这些约束的同时指定需要创建的索引类型。