你可以先导入,并在数据库中创建一个行号列,记录每一行的行号。导入后,再对数据进行处理,设要判断重新的字段为Col1,设行号列为ID1,
设表名为TBL,那么代码如下:
DECLARE
@T
TABLE(
Col1
VARCHAR(1000
)
)
DECLARE
@C1
VARCHAR(1000)
INSERT
@T(
Col1
)
SELECT
Col1
FROM
TBL
GROUP
BY
Col1
HAVING
COUNT()
>
1
WHILE
((SELECT COUNT(*)FROM @T)>
0
)
BEGIN
SELECT
TOP
1
@C1
=
Col1
FROM
@T1
DELETE
@T
WHERE
Col1
=
@C1
DELETE
TBL
WHERE
Col1
=
@C1
AND
ID1
<
(
SELECT
MAX(
ID1
)
FROM
WHERE
Col1
=
@C1
)
END
这个问题想多了就变复杂了。
首先要确定除了你自己外没有人 *** 作数据库;
更新表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规则。
设计数据库结构时,应该避免主键字段有意义,比如用学生学号、人的身份z号做主键都不好,因为这些数据后期都可能要改动,最好用一个序列号做主键去关联所有的子表,这样就不需要改主表主键值了。
你这个问题可以这样解决,先把要改主键的记录复制一条,主键用新值,然后把所有子表的对应记录改掉,最后删除主表的原记录。
以上就是关于c#从excel导入sql数据库,主键重复则更新问题全部的内容,包括:c#从excel导入sql数据库,主键重复则更新问题、SQL数据库主键修改问题、如何更改SQL数据库中的主键数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)