# ¿Está bien actualizar external\_id en la base de datos de discourse?

**URL:** https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592
**Category:** SSO
**Created:** [7 Junio, 2023 20:35 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592 "2023-06-07T20:35:49Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Nicolas\_Barrera](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolas_barrera/32/287091_2.png) [@Nicolas\_Barrera](https://meta.discourse.org/u/Nicolas_Barrera)
#### Post date: [7 Junio, 2023 20:35 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592/1 "2023-06-07T20:35:49Z")

</div>

He estado buscando en el foro información sobre la actualización de `external_id` en la base de datos de Discourse.

Encontré este tema interesante:

> [@Is it possible to change users SSO's external\_id after a DB migration?](https://meta.discourse.org/t/is-it-possible-to-change-users-ssos-external-id-after-a-db-migration/62099):
>
> First I had issues with the external\_id field on SSO, because they were all initially strings of length 16, and later I stored 24chars strings, but it completely messed up, you could get logged under a different user, it seems it cropped the external\_id length, but that was hard to debug. So I make sure to keep external\_id with the same length, it’s not really practical, why not using a TEXT column type for it? And my question is also, can I update the external\_id of existing users, after doin…

Aún así, estaba interesado en algunas ideas sobre las implicaciones de actualizar el `external_id` en la base de datos.

¿Podría simplemente emitir una actualización SQL y establecer el nuevo `external_id` correcto? ¿Puede eso traer algún problema oculto? ¿Como si el usuario tuviera una sesión abierta actual o algo más?

Tengo los usuarios creados a través de SSO usando un `external_id` que es el ID de cuenta del usuario en el sistema externo. (Puede que necesite modelar algo más, pero sería genial poder evitar cambiar el modelo del sistema externo al menos por ahora)

El problema para mí es que la persona puede tener más de una cuenta en el sistema externo y puede fusionar esas cuentas en una, por lo que a veces, dependiendo de cómo fusione, puede surgir un nuevo `external_id` para el mismo usuario/correo electrónico.

Estoy usando la opción `require_activation`, así que, como he leído en el tema mencionado, no puedo eliminar el registro y esperar a que se recree.

Gracias

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7 Junio, 2023 22:09 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592/2 "2023-06-07T22:09:07Z")

</div>

> [@Nicolas\_Barrera](#):
>
> ¿podría simplemente emitir una actualización de sql y establecer el `external_id` correcto nuevo?

Sí, deberías poder hacerlo, pero primero deberías solucionar el problema real

> [@Nicolas\_Barrera](#):
>
> el problema para mí es que la persona puede tener más de una cuenta en el sistema externo y puede fusionar esas cuentas en una, por lo que a veces, dependiendo de cómo fusione, puede aparecer un nuevo external\_id para el mismo usuario/correo electrónico.

por ejemplo, cuando se fusionan cuentas, asegúrate siempre de que se asigne/utilice el ID más bajo.

---

<div class="post-metadata">

### Author: ![Nicolas\_Barrera](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolas_barrera/32/287091_2.png) [@Nicolas\_Barrera](https://meta.discourse.org/u/Nicolas_Barrera)
#### Post date: [8 Junio, 2023 13:56 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592/3 "2023-06-08T13:56:20Z")

</div>

Sí… durante las fusiones de cuentas externas, respeto la cuenta más antigua… pero a veces eso no es lo que necesito.

Algunas cuentas interactúan con el foro (tipo A, digamos) y otras cuentas no están destinadas a eso (tipo B).

así que si primero crean una cuenta tipo B…  
y luego crean una cuenta tipo A, inician sesión con ella en el foro

y luego fusionan A y B y honran la cuenta más antigua que tiene un external\_id diferente

así que sí…  
Necesito encontrar una solución para mi cosa del sistema externo…

pero creo que configuraré un cron diario que verifique si ha sucedido algo de esto y corrija los external\_ids por el momento.

¡Gracias!

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [8 Junio, 2023 15:34 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592/4 "2023-06-08T15:34:56Z")

</div>

En ese caso, podrías:

a) Sincronizar _todas_ las cuentas con Discourse utilizando el mecanismo de sincronización SSO.  
b) Hacer un seguimiento de qué cuentas se han utilizado para iniciar sesión en Discourse.  
o  
c) Al fusionar, [realizar una búsqueda de ID externo](https://meta.discourse.org/t/find-a-user-by-their-identity-provider-external-id/169723) para determinar qué cuenta(s) se han utilizado con Discourse.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [8 Julio, 2023 15:35 UTC](https://meta.discourse.org/t/is-it-ok-to-update-external-id-on-discourse-database/267592/5 "2023-07-08T15:35:34Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
