更新主键起始字符

时间:2016-12-01 09:03:14

标签: sql rdbms

我有一个表student,它有一个主键student_idstudent_id在多个表中引用。 student_id格式为P123X12

表格如下

  • 学生(student_id是PK
  • audit_trail(student_id为FK
  • 结果(student_id为FK
  • 更多10个表格,指的是student_id

我在结果表中有100条记录,我想将这些记录的student_id从P123X12更新为D123X12。无论如何我可以改变这些推荐值吗?

1 个答案:

答案 0 :(得分:1)

根据我的评论,您可以复制学生中的数据。更改您的FK字段,然后从学生中删除原始记录。如果您没有更改以P开头的所有字段,您可能需要调整where子句。

/* Duplicate our data in student */
INSERT INTO student (student_id, field2, field3, field4)
SELECT
'D' + SUBSTRING(student_id,2,LEN(student_id)-1)
,field2
,field3
,field4
FROM student
WHERE student_id LIKE 'P%'

/* Update our other tables */
UPDATE audit_trail
SET student_id = 'D' + SUBSTRING(student_id,2,LEN(student_id)-1)
WHERE student_id LIKE 'P%'

UPDATE Result
SET student_id = 'D' + SUBSTRING(student_id,2,LEN(student_id)-1)
WHERE student_id LIKE 'P%'

/* Delete the original rows from student */
DELETE student
WHERE student_id LIKE 'P%' 

稍微长一点的方法是将原始字段提取到临时表中并从那里插入。然后,您可以从具有内部联接的学生中删除临时表,以确保您只删除您确定要的行。