--为保险起见,还是现将你的这个表备份一下
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数据库主键修改问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)