SqlServer 复制表的自增属性

由于Navicat开始付费才能使用,就改为dbEaver,但是这个工具有点奇怪的地方就是

Export数据表备份之后 会丢失主键,如果直接建表导入相关数据,自增设置等特殊配置

方案一:直接根据已有的id(导入的没有自增属性的表) 加上新的自增属性


alter table aaa drop column id
alter table aaa add id int identity(1,1)

遇到的问题是,系统中的菜单 权限等有关联的数据,id必须在三个环境test\uat\pro的数据库中保持一致,上述方法会导致 三个库的表id的值是顺序来增加,而不一定能保持跟原数据一致,如果原始数据中有id的行数据被删掉过,那肯定就跟新的自增id不一致了,

如果你对自增属性保持一致有要求,那么方案二肯定是比较适合了。

方案二: 可以保持id的原始值跟来源表一致,并且下次自增量一致 

1、Export table 数据来源表——只有基础数据;

2、创建新表 有identity的属性;

-- 另外一种方式 先新建表 再导入数据
DROP  TABLE basf_filte_keyword;
CREATE TABLE basf_filter_keyword (
    id int IDENTITY(1,1) NOT NULL primary key,
    keyword nvarchar(255) COLLATE Chinese_PRC_CI_AI NULL,
    translation_en nvarchar(255) COLLATE Chinese_PRC_CI_AI NULL,
    translation_jp nvarchar(255) COLLATE Chinese_PRC_CI_AI NULL,
    create_time int NULL,
    status tinyint NULL,
    update_time int NULL,
    create_by int NULL,
    update_by int NULL
);

3、从目标表中导入相关数据

-- 取消序列的自增长的SQL语句
set identity_insert basf_resource on
insert into  basf_resource (name, sort, parent_id, resource_type, url, resource_code, data_status, icon, update_date, create_date, id,function_type, name_zh, resource_module, name_jp)
 select name, sort, parent_id, resource_type, url, resource_code, data_status, icon, update_date, create_date, id1, function_type, name_zh, resource_module, name_jp from basf_resource_pro_20220621 brp ; 
set identity_insert basf_resource off

其他相关自增属性的小方法:

-- 查询当前表的自增id
SELECT IDENT_CURRENT('basf_resource ');

-- 重置当前表的最大自增id
dbcc checkident('basf_resource ',reseed,694);

希望dbEaver越做越好,可以复制粘贴对应的主键和自增属性,如果你有更好的办法了解决此问题,欢迎留言

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值