数据库主键问题,怎么设置主键

数据库主键问题,怎么设置主键,第1张

--为保险起见,还是现将你的这个表备份一下

SELECT  into t FROM TT3

--test 为你要 *** 作的表,先删除主键

alter table test change id id int; --ID为你的主键自增列,删除自增

alter table test change id id  auto_increment;  --在设置自增

PS:我没有MYSQL不能测试,楼主去试试上面的看,不行的话可以先将这一列删除,然后在重新添加这一列:

alter table `表格名` add column `列名` int not null auto_increment primary key comment '主键' first;   

如果每次要更新多行,那必须还要有一个唯一索引来定位要修改的记录,比如为Col_Uq,那可以如下写触发器:

create

trigger

tri_update_tb_1_pk

on

tb_1

for

update

as

if

not

update(col_pk)

return

update

tb_2

set

col_pk=icol_pk

from

tb_2,inserted

i,deleted

d

where

tb_2col_pk=dcol_pk

and

iCol_Uq=dCol_Uq

go

如果保证每次只更新一行,那可以如下写触发器:

create

trigger

tri_update_tb_1_pk

on

tb_1

for

update

as

if

not

update(col_pk)

return

if

(select

count()

from

inserted)>

1

return

update

tb_2

set

col_pk=icol_pk

from

tb_2,inserted

i,deleted

d

where

tb_2col_pk=dcol_pk

go

这个问题想多了就变复杂了。

首先要确定除了你自己外没有人 *** 作数据库

更新表A中的主键、和另一个字段;

更新B、C表中的AOID;

不需要关联,都直接增加6000即可。

update A set oid=oid+6000,recipientcertificateid=recipientcertificateid+6000;

update B set AOID=AOID+6000;

update C set AIOD=AIOD+6000;

原理:

A表直接将字段增加6000,而B与C表中外键需要相应修改,同时全表更新外键增加6000即可。

那就建一张临时表,把数据导到临时表,然后清空本表,再重新插入,插入的时候用新的OID规则。

以上就是关于数据库主键问题,怎么设置主键全部的内容,包括:数据库主键问题,怎么设置主键、sqlserver数据库修改主键类型、SQL数据库主键修改问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9816302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存