Crear valores por defecto en columnas SQL Server

De forma similar a como creamos reglas (Rules) en este artículo, podemos crear valores por defecto de forma genérica y asignarlos a las distintas columnas que nos interese.

Un ejemplo sencillo, sería crear un valor default (por defecto), que indique que un salario por defecto para un nuevo empleado sea el minimo interprofesional, de 641 euros. Entonces, primero se crearía el Default, y despues lo asignaríamos a la columna Salario.

 

CREATE DEFAULT Nombre AS Expresión
CREATE DEFAULT SalarioMinimo AS int

Para vincular este DEFAULT se usa:

EXEC sp_bindefault SalarioMinimo,'Empleados.Salario'

Para desvincularlo es similar pero intercambia los parámetros.

EXEC sp_unbindefault 'Empleados.Salario',SalarioMinimo

Se pueden ver todas las restricciones con sp_helpcontraint

Parámetro OUTPUT de retorno en Store Procedures

Para indicar en un sp que un parámetro es de salida, es decir, que va a retornar la información procesada por el procedimiento, debemos indicarle la palabra OUTPUT en la declaración.

CREATE PROCEDURE DevolverSalario @pnum int, @total int output AS

SELECT @total=salario+comision FROM EMP WHERE EMP_NO=@pnum

De igual modo, al leer la información, en la ejecución del procedimiento almacenado, debemos usar la palabra reservada OUTPUT.

DECLARE res int
EXEC DevolverSalario 7499, @res output
PRINT @res

Crear reglas en SQLServer

Una regla de SQLServer, es la entidad que nos permite validar datos de una columna en la inserción o actualización.

Por ejemplo, una regla podría indicar a nuestra columna Salario, que no se puedan meter cifras menores al salario mínimo interprofesional, por ejemplo en España, 641 euros.

La sintaxis sería la siguiente:

CREATE RULE NombreRegla

AS Condición

Donde Condición es de la misma forma que en un WHERE.

El ejemplo sería:

CREATE RULE SalarioMinimo AS @NuevoSalario > 641

Una vez, creada, hay que vincularla a la columna de la tabla que queramos que tenga esta restricción. Pueden ser muchas columnas de distintas tablas.

Utilizaremos para vincular la regla, el procedimiento almacenado de sistema sp_bindrule. Para desvincularla, necesitaremos sp_unbindrule.

La sintaxis es la siguiente:

Vincular Regla:

EXEC sp_bindrule Funcion_rule,'Tabla.Columna'

Desvincular Regla: (Los parámetros van al reves)

EXEC sp_unbindrule 'Tabla.Columna', Funcion_rule

Para borrar una regla DROP RULE nombre. No nos dejará borrar reglas que tengan vínculos.

 

Ejecutar ficheros de scripts pesados contra SQL Server

Si necesitais ejecutar un script con una consulta kilométrica y el editor de SQL Server no tiene memoria para cargarlo en el editor, podemos hacerlo de forma externa usando la herramienta SQLCMD, que viene en la instalación de SQL Server.

Tiene infinidad de opciones que se pueden consultar en el MSDN, pero las mas usada es la de ejecución directa contra la base de datos.

 

Esta sería la sintaxis sencilla para ejecutar el script contenido en el fichero myScript.sql contra nuestra base de datos.

sqlcmd -S miServidor\nombreDeInstancia -i C:\myScript.sql

Asegurate que dentro del script, se apunta a la base de datos correcta, con la sentencia USE.