Мне нужно придумать, как люди могли бы пригласить существующего пользователя (который принадлежит организации A) в организацию B, а затем настроить и какие разрешения они будут иметь в организации B после того, как они примут приглашение. Разрешения реализованы в виде внешних ключей для идентификатора пользователя из различных таблиц.
Моя идея состоит в том, чтобы создать «прокси-пользователя» с другим идентификатором, и люди могут предоставлять разрешения прокси-пользователю. Затем, когда реальный пользователь принимает приглашение, я обновляю все внешние ключи от идентификатора прокси-пользователя до реального идентификатора пользователя.
Я бы хотел UPDATE "Users" SET id = :realUserId WHERE id = :proxyUserId
, чтобы воспользоваться ON UPDATE CASCADE
предложениями всех моих FOREIGN KEY
ограничений. Но очевидно, что это вызовет конфликт первичного ключа, так как :realUserId
уже существует.
Я не думаю, что есть какой-либо разумный способ заставить Postgres выполнять каскадные обновления всех таблиц с внешними ключами до Users
, без обновления самого Users
?