2014-12-08 5 views
0

Привет, У меня есть сценарий, в котором у меня есть несколько баз данных SQL, и инструмент в центральной базе данных, который соединяется с каждой пользовательской таблицей в каждой базе данных и создает набор данных.SQL Regenerate Guid PK

Проблема возникает, когда пользователь из одной базы данных переносится на другую. Когда инструмент запускается, он сталкивается с проблемой, потому что user_id является директором pk, и поскольку пользователи были перенесены через базы данных, набор данных будет иметь дубликаты закрытых ключей в конечном наборе данных.

Мой вопрос, если я хочу, чтобы регенерировать идентификатор пользователя Guid для некоторых пользователей, я, конечно, должен также обновить все соединительные внешние ключи. Есть есть команда в MS SQL для восстановления GUID, а также сделать это для всех связующих отношений?

+0

При обновлении каскада? –

+0

Ничего автоматического, о котором я знаю. Сколько таблиц, содержащих FK, есть? Для этого просто создать SP, или создать его в процессе миграции. Вам нужно помнить оригинальный GUID? Если вы перепишете его, вы никогда не сможете дедуплицировать их после этого, если это потребуется. –

ответ

0

ON UPDATE CASCADE - это то, что вы хотите, но вам нужно определить его в отношениях внешнего ключа заблаговременно.

CREATE TABLE User (UserID UNIQUEIDENTIFIER, UserName varchar(30), ...) 

CREATE TABLE UserData (DataID UNIQUEIDENTIFIER, UserID UNIQUEIDENTIIFER, ...) 

ALTER TABLE UserData 
    ADD CONSTRAINT FK_UserData_UserID (UserID) REFERENCES User(UserID) 
     ON UPDATE CASCADE; 
+0

О, отлично, это может быть то, что мне нужно, спасибо. Я не думаю, что он был определен в отношениях главой времени, но я уверен, что могу изменить его, чтобы добавить это свойство. Спасибо, я дам вам знать, как это происходит. – CodeMusic

Смежные вопросы