¿Cómo actualizar múltiples filas dentro de la misma tabla en una sola sentencia de SQL?
Estoy intentando actualizar dos valores en la misma columna, en la misma tabla y en diferentes filas en un solo proceso. Las etiquetas DefaultForAxisID indican si el CategoryID es primario o secundario.
En el ejemplo ANTES y DESPUÉS, necesito establecer simultáneamente lo siguiente para evitar errores.
DefaultforAxisID = 2 donde ProcedureCodeID = 195837 y CategoryID = 21
DefaultforAxisID = null donde ProcedureCodeID = 195837 y CategoryID = 22
En otras palabras, necesito intercambiar los DefaultforAxisID para CategoryID 21 y 22.
Cuando ejecuto la Figura A, obtengo el siguiente error (Figura B), pero actualiza la columna. Probablemente podría seguirlo con una segunda actualización, pero simplemente no me siento cómodo de que esté arrojando un error y, por lo tanto, estoy explorando alternativas.
Figura A.
sql
UPDATE ProcedureCodeCategory
SET DefaultForAxisID = null
WHERE CategoryID = 22 y ProcedureCodeID = 195837
Figura B:\
[Código: 50000, Estado SQL: S0001] No está permitido borrar una predeterminación existente. Seleccione una nueva predeterminación para este procedimiento si ya no es válida. [Posición del script: 1795 – 1805]
Cuando descubra cómo lograr esto, crearé un procedimiento almacenado en la base de datos e incorporaré Python en una función.
ANTES
ProcedureCodeCategoryID | ProcedureCodeID | CategoryID | IsInherited | DefaultforAxisID |
---|---|---|---|---|
998743 | 195837 | 21 | false | (null) |
998509 | 195837 | 22 | false | 2 |
998742 | 195837 | 314 | false | (null) |
998510 | 195837 | 316 | false | 3 |
DESPUÉS
ProcedureCodeCategoryID | ProcedureCodeID | CategoryID | IsInherited | DefaultforAxisID |
---|---|---|---|---|
998743 | 195837 | 21 | false | 2 |
998509 | 195837 | 22 | false | (null) |
998742 | 195837 | 314 | false | (null) |
998510 | 195837 | 316 | false | 3 |
davy.ai
Puede utilizar la siguiente consulta para lograr el resultado deseado: