SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
MANUALITO MS-SQL SERVER
Contenido
1. Crear Store Procedures en MS SQL Server.................................................................................. 1
2. Crear Triggers en MS SQL Server................................................................................................. 5
3. Crear Vistas en MS SQL Server.................................................................................................... 9
1. Crear Store Procedures en MS SQL Server
 Si lo hacemos por el Enterprise Manager, encima de la base de datos, desplegaremos la carpeta de
storeds, botón derecho y "New Stored Procedure"
 El Enterprise Manager por defecto pone:
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
 Un store procedure o procedimiento almacenado es un programa dentro de la base de datos que
ejecuta una acción o conjunto de acciones específicas.
 Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.
 Los procedimientos almacenados pueden devolver valores (numérico entero) o conjuntos de
resultados.
 Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE.
CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]
AS
-- Sentencias del procedure
 Para modificar un procedimiento almacenado debemos emplear la sentencia ALTER PROCEDURE.
ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
AS
-- Sentencias del procedure
 El siguiente ejemplo muestra un procedimiento almacenado, denominado spu_addCliente que inserta
un registro en la tabla "CLIENTES".
CREATE PROCEDURE spu_addCliente @nombre varchar(100),@apellido1 varchar(100),@apellido2
varchar(100),@codClivarchar(20),@fxNaciento datetime
AS
INSERT INTO CLIENTES(nombre, apellido1, apellido2, codcli, fxnacimiento) VALUES (@nombre,
@apellido1, @apellido2, @codcli, @fxNaciento)
 Para ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC. Cuando la ejecución
del procedimiento almacenado es la primera instrucción del lote, podemos omitir el uso de EXEC.
 El siguiente ejemplo muestra la ejecución del procedimiento almacenado anterior.
DECLARE @fecha_nacimiento datetime
set @fecha_nacimiento = convert(datetime, '29/12/1976', 103)
EXEC spu_addCliente 'David', 'Sarmiento', 'Cervantes', '00000002323', @fecha_nacimiento
 Siempre es deseable que las instrucciones del procedure estén dentro de un bloque TRY CATCH y
controlados por una transacción.
ALTER PROCEDURE spu_addCliente @nombre varchar(100),@apellido1 varchar(100),@apellido2
varchar(100),@codClivarchar(20),@fxNaciento datetime
AS
BEGIN TRY
BEGIN TRAN
INSERT INTO CLIENTES(nombre, apellido1, apellido2, codcli, fxnacimiento) VALUES(@nombre, @apellido1,
@apellido2, @codcli, @fxNaciento)
COMMIT
END TRY
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
BEGIN CATCH
ROLLBACK
PRINT ERROR_MESSAGE()
END CATCH
 Si queremos que los parámetros de un procedimiento almacenado sean de entrada-salida debemos
especificarlo a través de la palabra clave OUTPUT, tanto en la definición del procedure como en la
ejecución.
 El siguiente ejemplo muestra la definición de un procedure con parámetros de salida.
CREATE PROCEDURE spu_ObtenerSaldoCuenta @numCuenta varchar(20), @saldo decimal(10,2) output
AS
BEGIN
SELECT @saldo = SALDO
FROM CUENTAS
WHERE NUMCUENTA = @numCuenta
END
 Y para ejecutar este procedure:
DECLARE @saldo decimal(10,2)
EXEC spu_ObtenerSaldoCuenta '200700000001', @saldo output
PRINT @saldo
 Un procedimiento almacenado puede devolver valores numéricos enteros a través de la instrucción
RETURN. Normalmente debemos utilizar los valores de retorno para determinar si la ejecución del
procedimiento ha sido correcta o no. Si queremos obtener valores se recomienda utilizar parámetros
de salida o funciones escalares.
 El siguiente ejemplo muestra un procedimiento almacenado que devuelve valores.
CREATE PROCEDURE spu_EstaEnNumerosRojos @numCuenta varchar(20) AS
BEGIN
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
IF (SELECT SALDO FROM CUENTAS
WHERE NUMCUENTA = @numCuenta) < 0
BEGIN
RETURN 1
END
ELSE
RETURN 0
END
 El siguiente ejemplo muestra como ejecutar el procedure y obtener el valor devuelto.
DECLARE @rv int
EXEC @rv = spu_EstaEnNumerosRojos '200700000001'
PRINT @rv
 Otra característica interesante de los procedimientos almacenados es que pueden devolver uno o
varios conjuntos de resultados.
 El siguiente ejemplo muestra un procedimiento almacenado que devuelve un conjunto de resultados.
CREATE PROCEDURE spu_MovimientosCuenta @numCuenta varchar(20) AS
BEGIN
SELECT @numCuenta, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE, FXMOVIMIENTO
FROM MOVIMIENTOS
INNER JOIN CUENTAS ON MOVIMIENTOS.IDCUENTA = CUENTAS.IDCUENTA
WHERE NUMCUENTA = @numCuenta
ORDER BY FXMOVIMIENTO DESC
END
 La ejecución del procedimiento se realiza normalmente.
EXEC spu_MovimientosCuenta '200700000001'
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
 El resultado de la ejecución:
NUMCUENTA SALDO_ANTERIOR SALDO_POSTERIOR IMPORTE FXMOVIMIENTO
------------ -------------- ---------------- ------- -----------------------
200700000001 50.99 100.99 50.00 2007-08-25 16:18:36.490
200700000001 0.99 50.99 50.00 2007-08-23 16:20:41.183
200700000001 50.99 0.99 50.00 2007-08-23 16:16:29.840
200700000001 0.99 50.99 50.00 2007-08-23 16:14:05.900
2. Crear Triggers en MS SQL Server
 Un trigger (o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta
automáticamente cuando se produce un evento en el servidor de bases de datos.
 SQL Server proporciona los siguientes tipos de triggers:
o Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento de
lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT,
UPDATE o DELETE de una tabla o vista.
o Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de
datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y
DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que
ejecutan operaciones de tipo DDL.
Trigger DML.
 Los trigger DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de
lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o
DELETE de una tabla o vista.
 La sintaxis general de un trigger es la siguiente:
CREATE TRIGGER <Trigger_Name, sysname, Trigger_Name>
ON <Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE> AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
END
 Antes de ver un ejemplo es necesario conocer las tablas inserted y deleted.
 Las instrucciones de triggers DML utilizan dos tablas especiales denominadas inserted y deleted. SQL
Server 2005 crea y administra automáticamente ambas tablas. La estructura de las tablas inserted y
deleted es la misma que tiene la tabla que ha desencadenado la ejecución del trigger.
 La primera tabla (inserted) solo está disponible en las operaciones INSERT y UPDATE y en ella están
los valores resultantes después de la inserción o actualización. Es decir, los datos
insertados. Inserted estará vacía en una operación DELETE.
 En la segunda (deleted), disponible en las operaciones UPDATE y DELETE, están los valores anteriores
a la ejecución de la actualización o borrado. Es decir, los datos que serán borrados. Deleted estará
vacía en una operación INSERT.
 ¿No existe una tabla UPDATED? No, hacer una actualización es lo mismo que borrar (deleted) e
insertar los nuevos (inserted). La sentencia UPDATE es la única en la que inserted y deleted tienen
datos simultáneamente.
 No se puede modificar directamente los datos de estas tablas.
 El siguiente ejemplo, graba un histórico de saldos cada vez que se modifica un saldo de la tabla
cuentas:
CREATE TRIGGER TR_CUENTAS
ON CUENTAS
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON impide que se generen mensajes de texto
-- con cada instrucción
SET NOCOUNT ON;
INSERT INTO HCO_SALDOS(IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate()FROM
INSERTED
END
 La siguiente instrucción provocará que el trigger se ejecute:
UPDATE CUENTAS
SET SALDO = SALDO + 10
WHERE IDCUENTA = 1
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
 Una consideración a tener en cuenta es que el trigger se ejecutará aunque la instrucción DML
(UPDATE, INSERT o DELETE) no haya afectado a ninguna fila. En este
caso inserted y deleted devolverán un conjunto de datos vacío.
 Podemos especificar a qué columnas de la tabla debe afectar el trigger.
ALTER TRIGGER TR_CUENTAS
ON CUENTAS
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON impide que se generen mensajes de texto
-- con cada instrucción
SET NOCOUNT ON;
IF UPDATE(SALDO) -- Solo si se actualiza SALDO
BEGIN
INSERT INTO HCO_SALDOS(IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM
INSERTED
END
END
 Los trigger están dentro de la transacción original (Insert, Delete o Update) por lo cual si dentro de
nuestro trigger hacemos un RollBack Tran, no solo estaremos echando atrás nuestro trigger sino
también toda la transacción; en otras palabras si en un trigger ponemos un RollBack Tran, la
transacción de Insert, Delete o Update volverá toda hacia atrás.
ALTER TRIGGER TR_CUENTAS
ON CUENTAS
AFTER UPDATE AS
BEGIN
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
-- SET NOCOUNT ON impide que se generen mensajes de texto
-- con cada instrucción
SET NOCOUNT ON;
INSERT INTO HCO_SALDOS (IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM
INSERTED
ROLLBACK
END
 En este caso obtendremos el siguiente mensaje de error:
La transacción terminó en el desencadenador. Se anuló el lote.
 Podemos activar y desactivar Triggers a través de las siguientes instrucciones.
-- Desactiva el trigger TR_CUENTAS
DISABLE TRIGGER TR_CUENTAS ON CUENTAS
GO
-- activa el trigger TR_CUENTAS
ENABLE TRIGGER TR_CUENTAS ON CUENTAS
GO
-- Desactiva todos los trigger de la tabla CUENTAS
ALTER TABLE CUENTAS DISABLE TRIGGER ALL
GO
-- Activa todos los trigger de la tabla CUENTAS
ALTER TABLE CUENTAS ENABLE TRIGGER ALL
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
Trigger DDL
 Los trigger DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de
datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de
Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones
de tipo DDL.
 La sintaxis general de un trigger es la siguiente:
CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety>
ON DATABASE
FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE> AS
BEGIN
...
END
 La siguiente instrucción impide que se ejecuten sentencias DROP TABLE y ALTER TABLE en la base de
datos.
CREATE TRIGGER TR_SEGURIDAD
ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS
BEGIN
RAISERROR ('No está permitido borrar ni modificar tablas !' , 16, 1)
ROLLBACK TRANSACTION
END
3. Crear Vistas en MS SQL Server
 En el modelo de datos relacional la forma de guardar la información no es la mejor para ver los datos.
 Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede
acceder a los datos como si fuera una tabla.
 Dos son las principales razones por las que podemos crear vistas.
o Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la
información que hay en una tabla, pero no a toda la tabla.
o Comodidad, como hemos dicho el modelo relacional no es el más cómodo para visualizar los
datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista
nos simplifica esta tarea.
 Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por
lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si
actualizamos la tabla estos cambios serán visibles desde la vista.
Universidad Veracruzana Taller de Integración III
Facultad de Estadística e Informática
 Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la
misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y
del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas,
ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí.
 Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a
la vista y una sentencia SQL SELECT válida.
CREATE VIEW <nombre_vista> AS (<sentencia_select>);
 Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y
apellidos del cliente en lugar de su código.
CREATE VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula
FROM tAlquileres, tClientes
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) )
 Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de
forma muy parecida a como lo hacíamos con las tablas. En este caso queremos añadir los
campos fx_alquiler y fx_devolucion a la vista.
ALTER VIEW vAlquileres AS (
SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion
FROM tAlquileres, tClientes
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) )
 Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que
hemos creado anteriormente se utilizaría:
DROP VIEW vAlquileres;
 Una vista se consulta como si fuese una tabla.
Para mayores referencias sobre MS SQL Server consultar:
http://technet.microsoft.com/es-es/library/default.aspx

Más contenido relacionado

La actualidad más candente

Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Jair Ospino Ardila
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)José Toro
 
Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)José Toro
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM Kamisutra
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosguesta403644
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 
Manejo de triggers en sql server
Manejo de triggers en sql server Manejo de triggers en sql server
Manejo de triggers en sql server Dheeyi William
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)José Toro
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)José Toro
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Disparadores
DisparadoresDisparadores
DisparadoresZiscko
 
Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12Alexander Calderón
 

La actualidad más candente (19)

Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)
 
Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
TRIGGERS Cliente - servidor
TRIGGERS Cliente - servidorTRIGGERS Cliente - servidor
TRIGGERS Cliente - servidor
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Manejo de triggers en sql server
Manejo de triggers en sql server Manejo de triggers en sql server
Manejo de triggers en sql server
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Tuning fondo-negro-2
Tuning fondo-negro-2Tuning fondo-negro-2
Tuning fondo-negro-2
 
MANUAL
MANUALMANUAL
MANUAL
 
51191625 triggers
51191625 triggers51191625 triggers
51191625 triggers
 
Attachment
AttachmentAttachment
Attachment
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12
 

Similar a Manualitosqlserver

7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOSSQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOSLuisDavidGarciaInga2
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggersdemoiselle
 
Tutorial disparadores
Tutorial disparadoresTutorial disparadores
Tutorial disparadoresMarck Prz
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de DatosMIROSLAVY
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Salvador Ramos
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosguesta403644
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos AlmacenadosRafa
 
Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollbacklinis129
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQLEQ SOFT EIRL
 
Manual Tecnico
Manual TecnicoManual Tecnico
Manual Tecnicomakoto10
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebsricardosusa5
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 

Similar a Manualitosqlserver (20)

TRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORESTRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORES
 
TRIGGER-ACTIVADORES
TRIGGER-ACTIVADORESTRIGGER-ACTIVADORES
TRIGGER-ACTIVADORES
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOSSQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
 
Trigger activadores
Trigger    activadoresTrigger    activadores
Trigger activadores
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
 
Cursores
CursoresCursores
Cursores
 
Tutorial disparadores
Tutorial disparadoresTutorial disparadores
Tutorial disparadores
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de Datos
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollback
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQL
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
 
Manual Tecnico
Manual TecnicoManual Tecnico
Manual Tecnico
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebs
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 

Último

Informe del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxInforme del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxCarlos Muñoz
 
Guia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGuia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGenioViral
 
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...SUSMAI
 
Estimación de consumo de agua en México por el fracking.pdf
Estimación de consumo de agua en México por el fracking.pdfEstimación de consumo de agua en México por el fracking.pdf
Estimación de consumo de agua en México por el fracking.pdfSUSMAI
 
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfAgenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfSUSMAI
 
Fracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfFracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfSUSMAI
 
La perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxLa perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxBrendaPalomaresSalas
 
picaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorpicaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorDamiiHernandez
 
administracion de unidades agropecuarias
administracion de unidades agropecuariasadministracion de unidades agropecuarias
administracion de unidades agropecuariasJacintoSoto2
 
Respiración de los mamíferos pptx........
Respiración de los mamíferos  pptx........Respiración de los mamíferos  pptx........
Respiración de los mamíferos pptx........juandiegomartinezesp
 
Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Nicolle932479
 
Hidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfHidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfSUSMAI
 
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxTaller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxLala NOmas
 
Presentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaPresentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaJuanDavidMonsalveMar
 
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxCuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxMarcoSanchez652945
 
Atlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxAtlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxSUSMAI
 
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...SUSMAI
 
Revista de volcanes de Él Salvador (1).pdf
Revista de volcanes de Él Salvador  (1).pdfRevista de volcanes de Él Salvador  (1).pdf
Revista de volcanes de Él Salvador (1).pdfaddriana1616
 
La infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraLa infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraMariaCleofeTolentino
 

Último (20)

Informe del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxInforme del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docx
 
Guia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGuia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdf
 
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
 
Estimación de consumo de agua en México por el fracking.pdf
Estimación de consumo de agua en México por el fracking.pdfEstimación de consumo de agua en México por el fracking.pdf
Estimación de consumo de agua en México por el fracking.pdf
 
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfAgenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
 
Fracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfFracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdf
 
La perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxLa perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptx
 
picaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorpicaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vector
 
administracion de unidades agropecuarias
administracion de unidades agropecuariasadministracion de unidades agropecuarias
administracion de unidades agropecuarias
 
Respiración de los mamíferos pptx........
Respiración de los mamíferos  pptx........Respiración de los mamíferos  pptx........
Respiración de los mamíferos pptx........
 
Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001
 
Hidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfHidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdf
 
Introducción sintética a las Enfermedades de las Plantas
Introducción sintética a las Enfermedades de las PlantasIntroducción sintética a las Enfermedades de las Plantas
Introducción sintética a las Enfermedades de las Plantas
 
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxTaller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
 
Presentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaPresentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas química
 
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxCuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
 
Atlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxAtlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptx
 
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...
ATLAS DEL SOCIOECOSISTEMA: RÍO GRANDE DE COMITÁN-LAGOS DE MONTEBELLO, CHIAPAS...
 
Revista de volcanes de Él Salvador (1).pdf
Revista de volcanes de Él Salvador  (1).pdfRevista de volcanes de Él Salvador  (1).pdf
Revista de volcanes de Él Salvador (1).pdf
 
La infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraLa infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO sera
 

Manualitosqlserver

  • 1. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática MANUALITO MS-SQL SERVER Contenido 1. Crear Store Procedures en MS SQL Server.................................................................................. 1 2. Crear Triggers en MS SQL Server................................................................................................. 5 3. Crear Vistas en MS SQL Server.................................................................................................... 9 1. Crear Store Procedures en MS SQL Server  Si lo hacemos por el Enterprise Manager, encima de la base de datos, desplegaremos la carpeta de storeds, botón derecho y "New Stored Procedure"  El Enterprise Manager por defecto pone: CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS  Un store procedure o procedimiento almacenado es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones específicas.  Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.  Los procedimientos almacenados pueden devolver valores (numérico entero) o conjuntos de resultados.  Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE. CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure  Para modificar un procedimiento almacenado debemos emplear la sentencia ALTER PROCEDURE. ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]
  • 2. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática AS -- Sentencias del procedure  El siguiente ejemplo muestra un procedimiento almacenado, denominado spu_addCliente que inserta un registro en la tabla "CLIENTES". CREATE PROCEDURE spu_addCliente @nombre varchar(100),@apellido1 varchar(100),@apellido2 varchar(100),@codClivarchar(20),@fxNaciento datetime AS INSERT INTO CLIENTES(nombre, apellido1, apellido2, codcli, fxnacimiento) VALUES (@nombre, @apellido1, @apellido2, @codcli, @fxNaciento)  Para ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC. Cuando la ejecución del procedimiento almacenado es la primera instrucción del lote, podemos omitir el uso de EXEC.  El siguiente ejemplo muestra la ejecución del procedimiento almacenado anterior. DECLARE @fecha_nacimiento datetime set @fecha_nacimiento = convert(datetime, '29/12/1976', 103) EXEC spu_addCliente 'David', 'Sarmiento', 'Cervantes', '00000002323', @fecha_nacimiento  Siempre es deseable que las instrucciones del procedure estén dentro de un bloque TRY CATCH y controlados por una transacción. ALTER PROCEDURE spu_addCliente @nombre varchar(100),@apellido1 varchar(100),@apellido2 varchar(100),@codClivarchar(20),@fxNaciento datetime AS BEGIN TRY BEGIN TRAN INSERT INTO CLIENTES(nombre, apellido1, apellido2, codcli, fxnacimiento) VALUES(@nombre, @apellido1, @apellido2, @codcli, @fxNaciento) COMMIT END TRY
  • 3. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática BEGIN CATCH ROLLBACK PRINT ERROR_MESSAGE() END CATCH  Si queremos que los parámetros de un procedimiento almacenado sean de entrada-salida debemos especificarlo a través de la palabra clave OUTPUT, tanto en la definición del procedure como en la ejecución.  El siguiente ejemplo muestra la definición de un procedure con parámetros de salida. CREATE PROCEDURE spu_ObtenerSaldoCuenta @numCuenta varchar(20), @saldo decimal(10,2) output AS BEGIN SELECT @saldo = SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta END  Y para ejecutar este procedure: DECLARE @saldo decimal(10,2) EXEC spu_ObtenerSaldoCuenta '200700000001', @saldo output PRINT @saldo  Un procedimiento almacenado puede devolver valores numéricos enteros a través de la instrucción RETURN. Normalmente debemos utilizar los valores de retorno para determinar si la ejecución del procedimiento ha sido correcta o no. Si queremos obtener valores se recomienda utilizar parámetros de salida o funciones escalares.  El siguiente ejemplo muestra un procedimiento almacenado que devuelve valores. CREATE PROCEDURE spu_EstaEnNumerosRojos @numCuenta varchar(20) AS BEGIN
  • 4. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática IF (SELECT SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta) < 0 BEGIN RETURN 1 END ELSE RETURN 0 END  El siguiente ejemplo muestra como ejecutar el procedure y obtener el valor devuelto. DECLARE @rv int EXEC @rv = spu_EstaEnNumerosRojos '200700000001' PRINT @rv  Otra característica interesante de los procedimientos almacenados es que pueden devolver uno o varios conjuntos de resultados.  El siguiente ejemplo muestra un procedimiento almacenado que devuelve un conjunto de resultados. CREATE PROCEDURE spu_MovimientosCuenta @numCuenta varchar(20) AS BEGIN SELECT @numCuenta, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE, FXMOVIMIENTO FROM MOVIMIENTOS INNER JOIN CUENTAS ON MOVIMIENTOS.IDCUENTA = CUENTAS.IDCUENTA WHERE NUMCUENTA = @numCuenta ORDER BY FXMOVIMIENTO DESC END  La ejecución del procedimiento se realiza normalmente. EXEC spu_MovimientosCuenta '200700000001'
  • 5. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática  El resultado de la ejecución: NUMCUENTA SALDO_ANTERIOR SALDO_POSTERIOR IMPORTE FXMOVIMIENTO ------------ -------------- ---------------- ------- ----------------------- 200700000001 50.99 100.99 50.00 2007-08-25 16:18:36.490 200700000001 0.99 50.99 50.00 2007-08-23 16:20:41.183 200700000001 50.99 0.99 50.00 2007-08-23 16:16:29.840 200700000001 0.99 50.99 50.00 2007-08-23 16:14:05.900 2. Crear Triggers en MS SQL Server  Un trigger (o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos.  SQL Server proporciona los siguientes tipos de triggers: o Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista. o Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL. Trigger DML.  Los trigger DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista.  La sintaxis general de un trigger es la siguiente: CREATE TRIGGER <Trigger_Name, sysname, Trigger_Name> ON <Table_Name, sysname, Table_Name> AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE> AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here
  • 6. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática END  Antes de ver un ejemplo es necesario conocer las tablas inserted y deleted.  Las instrucciones de triggers DML utilizan dos tablas especiales denominadas inserted y deleted. SQL Server 2005 crea y administra automáticamente ambas tablas. La estructura de las tablas inserted y deleted es la misma que tiene la tabla que ha desencadenado la ejecución del trigger.  La primera tabla (inserted) solo está disponible en las operaciones INSERT y UPDATE y en ella están los valores resultantes después de la inserción o actualización. Es decir, los datos insertados. Inserted estará vacía en una operación DELETE.  En la segunda (deleted), disponible en las operaciones UPDATE y DELETE, están los valores anteriores a la ejecución de la actualización o borrado. Es decir, los datos que serán borrados. Deleted estará vacía en una operación INSERT.  ¿No existe una tabla UPDATED? No, hacer una actualización es lo mismo que borrar (deleted) e insertar los nuevos (inserted). La sentencia UPDATE es la única en la que inserted y deleted tienen datos simultáneamente.  No se puede modificar directamente los datos de estas tablas.  El siguiente ejemplo, graba un histórico de saldos cada vez que se modifica un saldo de la tabla cuentas: CREATE TRIGGER TR_CUENTAS ON CUENTAS AFTER UPDATE AS BEGIN -- SET NOCOUNT ON impide que se generen mensajes de texto -- con cada instrucción SET NOCOUNT ON; INSERT INTO HCO_SALDOS(IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate()FROM INSERTED END  La siguiente instrucción provocará que el trigger se ejecute: UPDATE CUENTAS SET SALDO = SALDO + 10 WHERE IDCUENTA = 1
  • 7. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática  Una consideración a tener en cuenta es que el trigger se ejecutará aunque la instrucción DML (UPDATE, INSERT o DELETE) no haya afectado a ninguna fila. En este caso inserted y deleted devolverán un conjunto de datos vacío.  Podemos especificar a qué columnas de la tabla debe afectar el trigger. ALTER TRIGGER TR_CUENTAS ON CUENTAS AFTER UPDATE AS BEGIN -- SET NOCOUNT ON impide que se generen mensajes de texto -- con cada instrucción SET NOCOUNT ON; IF UPDATE(SALDO) -- Solo si se actualiza SALDO BEGIN INSERT INTO HCO_SALDOS(IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM INSERTED END END  Los trigger están dentro de la transacción original (Insert, Delete o Update) por lo cual si dentro de nuestro trigger hacemos un RollBack Tran, no solo estaremos echando atrás nuestro trigger sino también toda la transacción; en otras palabras si en un trigger ponemos un RollBack Tran, la transacción de Insert, Delete o Update volverá toda hacia atrás. ALTER TRIGGER TR_CUENTAS ON CUENTAS AFTER UPDATE AS BEGIN
  • 8. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática -- SET NOCOUNT ON impide que se generen mensajes de texto -- con cada instrucción SET NOCOUNT ON; INSERT INTO HCO_SALDOS (IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM INSERTED ROLLBACK END  En este caso obtendremos el siguiente mensaje de error: La transacción terminó en el desencadenador. Se anuló el lote.  Podemos activar y desactivar Triggers a través de las siguientes instrucciones. -- Desactiva el trigger TR_CUENTAS DISABLE TRIGGER TR_CUENTAS ON CUENTAS GO -- activa el trigger TR_CUENTAS ENABLE TRIGGER TR_CUENTAS ON CUENTAS GO -- Desactiva todos los trigger de la tabla CUENTAS ALTER TABLE CUENTAS DISABLE TRIGGER ALL GO -- Activa todos los trigger de la tabla CUENTAS ALTER TABLE CUENTAS ENABLE TRIGGER ALL
  • 9. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática Trigger DDL  Los trigger DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.  La sintaxis general de un trigger es la siguiente: CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE> AS BEGIN ... END  La siguiente instrucción impide que se ejecuten sentencias DROP TABLE y ALTER TABLE en la base de datos. CREATE TRIGGER TR_SEGURIDAD ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS BEGIN RAISERROR ('No está permitido borrar ni modificar tablas !' , 16, 1) ROLLBACK TRANSACTION END 3. Crear Vistas en MS SQL Server  En el modelo de datos relacional la forma de guardar la información no es la mejor para ver los datos.  Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla.  Dos son las principales razones por las que podemos crear vistas. o Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla. o Comodidad, como hemos dicho el modelo relacional no es el más cómodo para visualizar los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea.  Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista.
  • 10. Universidad Veracruzana Taller de Integración III Facultad de Estadística e Informática  Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí.  Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida. CREATE VIEW <nombre_vista> AS (<sentencia_select>);  Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y apellidos del cliente en lugar de su código. CREATE VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula FROM tAlquileres, tClientes WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) )  Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo hacíamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista. ALTER VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion FROM tAlquileres, tClientes WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) )  Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se utilizaría: DROP VIEW vAlquileres;  Una vista se consulta como si fuese una tabla. Para mayores referencias sobre MS SQL Server consultar: http://technet.microsoft.com/es-es/library/default.aspx