Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Crear una columna rellenándola
Enviado por Danibolson el día 4 de mayo de 2006
Mi problema es que quiero crear una columna en una tabla y que al crearla se quede rellena. Le asigna un valor en cada fila. Pero si solo fuese un valor posible lo haría con default. El problema es que el valor con que se rellene depende de una condición que tiene que cumplir otra columna en la fila donde voy a rellenar.
Enviado por programador666 el día 4 de mayo de 2006
Que tal si lo intentas con un trigger. Aunque tal vez si explicaras bien cual es la condicion desencadenante de del relleno de la columna, te podria escribir un ejemplo de un trigger para hacerlo.
O podria ser con un CHECK. Asi que escribe un ejemplo de lo que quieres y con gusto te ayudaremos.
Hola, pues mira tengo una tabla con pendientes de carretera, que es un int que representa el % de inclinación.
Es decir, en una fila hay un 18, en otra un 2, en otra un 6.
Y tengo que crear una columna llamada Dureza que se rellena con "Fuerte" si la pendiente es mayor de 9 y con "Media" en otro caso. Tiene que ser rellenada en todas las filas en el momento en que se crea para que una posible consulta de la dureza de una pendiente a continuación obtenga un resultado correcto.
Enviado por programador666 el día 9 de mayo de 2006
Primero lo primero, particularmente los datos que son calculos no los almaceno en una tabla si puedo generarlo en algun query, ya recuerdo
mi profesor de Base de Datos diciendo : "los calculos no se almacenan."
Para el caso tuyo decidas lo que decidas te voy decir como hacerlo via trigger y query.
Primero debo suponer la estructura de la tabla
Pendientes_Carretera
Campo Tipo
Por_Cien Int
Entonces con un query, hago lo siguiente:
select case
when por_cien > 9 then 'Fuerte' else 'Media' end as Dureza
from Pendientes_Carretera
En este caso te genera el campo calculado "en tiempo de ejecucion".
Ahora bien, si quieres como quiera tenerlo calculado en algun campo de una tabla te aconsejo que algun trigger parecido al siguiente:
CREATE TRIGGER Calcular_Dureza ON Pendientes_Carretera
FOR INSERT, UPDATE
AS
begin
if (select por_cien from inserted) > 9 then
dureza = 'Fuerte';
if (select por_cien from inserted) < 9 then
dureza = 'Media';
end
Investiga bien la sintaxis del IF en los triggers, ya que ahora mismo no la tengo bien presente.
Gracias por tu ayuda, pero mi problema no es exactamente ese. Si no que ese valor lo tengo que establecer al crear la columna.
Esa columna todavía no existe en la tabla.