es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la siguiente consulta para lograr el resultado deseado:

    SQL
    ACTUALIZAR ProcedureCodeCategory
    CONJUNTO DefectoParaAxisID = CASO CUANDO CategoryID = 21 ENTonces 2 OTRO NULL FINAL
    DONDE ProcedureCodeID = 195837 Y (CategoryID = 21 O CategoryID = 22)
    

Comments are closed.