根據我的評論,你可以複製學生的數據。改變你的FK字段,然後刪除學生的原始記錄。你可能會想調整where子句,如果你不改變,與一個P.
/* 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%'
稍長的方式開始將原來的場提取到一個臨時表,並從那裏插入各個領域。然後,您可以從內部加入臨時表的學生中刪除,以確保您只刪除了您確實想要的行。
您是否可以使用新ID複製您的學生數據,然後更改您的外鍵,然後最終將您的原始值放入學生? –
所有記錄都以P開頭,我從「D」開始更改100個記錄,因此ID不會重複。 – piechuckerr
不,但其他一切都會,我會添加一個解釋的答案,因爲評論太長。 –