entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Sentencia SQL Server para update todas las columnas

Necesitaría una sentencia SQL que realizara un update de todos los campos de una tabla, es decir, tengo una tabla que controla los permisos de un usuario y tienes todos los campos a 0,1,2 dependiendo de "no ve", "read only" o "full access" y cuando tenemos que cambiar los permisos de un usuario lo hacemos a mano porque no sabemos ninguna sentencia que nos cambie el valor de todos los campos.

Es un tostón porque la tabla tiene como 150 campos y me gustaría hacer algo así como:

update tblFieldAccess_by_user set allfields = 1

Alguna ocurrencia magnífica por parte del team expert?

SaludoS!

1 Respuesta

0voto

Leonardo-Tadei Puntos227320

Hola Ankeorum,

hasta dónde sé, al menos en ANSI SQL, no se puede hacer esto.

Tampoco te serviría un "allfields", porque seguramente uno de esos campos será el ID del usuario, y ese campo no debería ser cambiado.

Ahora bien, si tenés una tabla con 150 campos, es muy probable de que tengas algún fallo en la normalización... habría que ver esto en el contexto de todas las tablas.

Podés mitigar esto de varias formas:

  • usando un ORM o helper que tenga una semántica más acorde a la funcionalidad.
  • generando la query programáticamente usando la salida de SHOW FIELDS FROM Tabla que te devuelve todos los campos de una tabla. Recorrés esa salida y generás la query.
  • repetando mejor el modelo relacional: el valor 1, 2 en el registro es que tiene permiso y de qué tipo, que no exista el registro es que no lo tiene, así que sacar permisos sería borrar los registros de permisos de un usuario... pero por lo que decís, no estás en Tercera Forma Normal y esto no es viable sin reestructurar.

Sin cambiar la estructura, la opción más cómoda es generar la query programáticamente.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta