• SQLServer之修改PRIMARY KEY


    使用SSMS数据库管理工具修改PRIMARY KEY

    1、连接数据库,选择数据表-》右键点击-》选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同)。

    2、选择要修改的数据列-》右键点击-》选择索引/键。

    3、在索引/键弹出框中-》选择要修改的主键-》类型选择主键-》点击列。

    4、在索引列弹出框中-》选择主键数据列-》选择主键的排序规则-》点击确定。

    5、在索引/键弹出框中-》输入要修改的主键名称-》输入要修改的主键描述-》表设计器规则可以使用系统默认-》点击关闭。

     

    6、点击保存(或者ctrl+s)-》关闭表设计器-》刷新表-》查看修改结果。

    使用T-SQL脚本修改PRIMARY KEY

    若要使用 Transact-SQL 修改 PRIMARY KEY 约束,必须先删除现有的 PRIMARY KEY 约束,然后再用新定义重新创建该约束。

    语法:

    --声明使用数据库
    use 数据库;
    go

    --如果已存在主键,则先删除再添加,如果不存在在则不删除
    if exists(select * from sysobjects where name=主键名)
    alter table 表名 drop constraint 主键名;
    go

    alter table 表名 
    add constraint 主键名
    primary key
    [nonclustered | clustered]  ----在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
    (列名 [asc | desc],列名 [asc | desc])
    --statistics_norecompute=on:过时的统计信息不会自动重新计算。
    --statistics_norecompute=off:启用自动统计信息更新。
    --ignore_dup_key=on:打开,将重复键值插入唯一索引时会出现警告消息。只有违反唯一性约束的行才会失败。
    --ignore_dup_key=off:关闭,将重复键值插入唯一索引时会出现错误消息。回滚整个INSERT操作。
    --allow_row_locks=on:访问索引时允许行锁。数据库引擎确定何时使用行锁。
    --allow_row_locks=off:不使用行锁。
    --allow_page_locks=on:访问索引时允许页锁。数据库引擎确定何时使用页锁。
    -- allow_page_locks=off:不使用页锁。
    with(statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary]
    go

    --添加主键描述
    execute sp_addextendedproperty N'MS_Description', N'主键描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'主键名';
    go

    示例:

    --声明使用数据库
    use testss;
    go

    --如果已存在主键,则先删除再添加,如果不存在在则不删除
    if exists(select * from sysobjects where name='PK__test1__3213E83F466EE881')
    alter table test1 drop constraint PK__test1__3213E83F466EE881;
    go

    alter table test1
    add constraint PK__test1__3213E83F466EE881
    primary key
    nonclustered ----在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
    (id asc)
    --statistics_norecompute=on:过时的统计信息不会自动重新计算。
    --statistics_norecompute=off:启用自动统计信息更新。
    --ignore_dup_key=on:打开,将重复键值插入唯一索引时会出现警告消息。只有违反唯一性约束的行才会失败。
    --ignore_dup_key=off:关闭,将重复键值插入唯一索引时会出现错误消息。回滚整个INSERT操作。
    --allow_row_locks=on:访问索引时允许行锁。数据库引擎确定何时使用行锁。
    --allow_row_locks=off:不使用行锁。
    --allow_page_locks=on:访问索引时允许页锁。数据库引擎确定何时使用页锁。
    -- allow_page_locks=off:不使用页锁。
    with(statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary]
    go

    --添加主键描述
    execute sp_addextendedproperty N'MS_Description', N'修改唯一主键', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'PK__test1__3213E83F466EE881';
    go

     

    修改PRIMARY KEY主键优缺点

    优点:

    1、主键可以是任意数据类型。

    2、整型主键简单、效率高。

    3、使用GUID作为主键安全,保证唯一性。

    4、使用GUID作为主键不会产生自增字段那样数据合并时的问题。

    缺点:

    1、整型主键有数据条数的限制。

    2、整型主键在数据库进行数据合并时会比较麻烦。

    3、整型之外的数据类型毫无规律,要在上面建立索引很耗时,所以效率要比使用自增字段低。

    4、整型之外的主键占用大量存储空间。

  • 相关阅读:
    elasticsearch数据迁移
    Leetcode <剑指 Offer 64. 求1+2+…+n>
    Leetcode <27.移除元素>
    Leetcode <7.整数反转>
    Leetcode <1. 两数之和>
    python实现对于告警规则的判断思路
    Python实现密码生成器
    Autojs 打包APP+签名
    Docker 文档整理
    Pycharm 连接Linux远程开发
  • 原文地址:https://www.cnblogs.com/vuenote/p/9598520.html
Copyright © 2020-2023  润新知