Está en la página 1de 4

CREATE TABLE tClientes

(
codigo integer not null,
nombre varchar(255) not null,
apellidos varchar(255) null,
nif varchar(10) null,
telefono varchar(9) null,
movil varchar(9) null
);
--Creamos la tabla clientes y le añadimos una reestricción primary key a la que damo
s el nombre PK_tCliente
ALTER TABLE tClientes ADD
CONSTRAINT PK_tClientes primary key (codigo);

CREATE TABLE tCoches


(
matricula char(8) not null,
marca varchar(255) null,
modelo varchar(255) null,
color varchar(255) null,
numero_kilometros numeric(14,2) null default 0,
constraint PK_Coches primary key (matricula)
) ;

CREATE TABLE tAlquileres


(
codigo integer not null,
codigo_cliente integer not null,
matricula char(8) not null,
fx_alquiler datetime not null,
fx_devolucion datetime null
);

ALTER TABLE tAlquileres ADD


CONSTRAINT PK_tAlquileres primary key (codigo),
CONSTRAINT FK_Clientes foreign key (codigo_cliente)
references tClientes (Codigo),
CONSTRAINT FK_Coches foreign key (matricula)
references tCoches (matricula);
--Esto nos permitirá buscar mucho mas rápido por el campo NIF y nos asegurará que no t
engamos dos NIF iguales.
CREATE UNIQUE INDEX UIX_CLIENTES_NIF
ON tCLIENTES (NIF);

--CONTROL DE ERRORES EN TRANSACT SQL


BEGIN TRY
DECLARE @divisor int,
@dividendo int,
@resultado int
SET @dividendo=100
SET @divisor=0
--Esta linea provoca un error
SET @resultado=@dividendo/@divisor
PRINT 'NO HAY ERROR'
END TRY
BEGIN CATCH
PRINT 'PRODUCIDO UN ERROR'
END CATCH
-- Las funciones especiales de error,están disponibles únicamente en el bloque
--CATCH para la obtención de información detallada del error.
BEGIN TRY
DECLARE @divisor int,
@dividendo int,
@resultado int
SET @dividendo=100
SET @divisor=0
--Esta linea provoca un error
SET @resultado=@dividendo/@divisor
PRINT 'NO HAY ERROR'
END TRY
BEGIN CATCH
PRINT ERROR_NUMBER()
PRINT ERROR_SEVERITY()
PRINT ERROR_STATE()
PRINT ERROR_PROCEDURE()
PRINT ERROR_LINE()
PRINT ERROR_MESSAGE()
END CATCH
--La variable de sistema @@ERROR
--variable global de sistema @@ERROR, que almacena el número de error producido po
r la última sentencia Transact SQL ejecutada.
DECLARE @divisor int ,
@dividendo int ,
@resultado int
SET @dividendo = 100
SET @divisor = 0
-- Esta linea provoca un error de division por 0
SET @resultado = @dividendo/@divisor
IF @@ERROR = 0
BEGIN
PRINT 'No hay error'
END
ELSE
BEGIN
PRINT 'Hay error'
END
--Generar un error con RAISERROR
-- En ocasiones es necesario provocar voluntariamente un error,
--por ejemplo nos puede interesas que se genere un error cuando los datos incump
len una regla de negocio.
DECLARE @tipo int,
@clasificacion int
SET @tipo=1
SET @clasificacion=3
IF (@tipo=1 AND @clasificacion=3)
BEGIN
RAISERROR('El tipo no puede valer uno y la clasificion 3',16,1)
--16:SEVERIDAD,1:ESTADO
END

--Actualizar datos en Transact SQL


UPDATE tclientes
SET
nombre='Mery',
apellidos='Paco Ramos'
WHERE
codigo=1

--Update INNER JOIN


UPDATE tclientes
SET
nombre='Mery Milagros',
telefono='952634875'
FROM
tclientes inner join talquileres
ON tclientes.codigo=taquileres.codido_clientes
--Borrar datos en Transact SQL
--creando una base de datos
CREATE TABLE DATOS
(
Id int identity not null, --se incrementa de uno en uno
dato varchar(100),
fx_alta datetime,
constraint PK_DATOS PRIMARY KEY (Id)
)
--insertando datos
DECLARE @i int,
@dato varchar(100)
SET @i=0
WHILE(@i<=100)
BEGIN
SET @i=@i+1
SET @dato ='Dato:'+cast(@i as varchar)
INSERT INTO DATOS(dato,fx_alta)
VALUES(@dato,getdate())
END
--BORRANDO TODOS LOS DATOS DE LAS TABLAS
DELETE FROM DATOS
--Clausula OUTPUT
DECLARE @FILAS_BORRADAS TABLE
( Id int,
dato varchar(100),
fx_alta datetime
)
DELETE
FROM DATOS
OUTPUT DELETED.* INTO @FILAS_BORRADAS
WHERE Id=104
SELECT * from @FILAS_BORRADAS
--PROCEDIMIENTOS ALMACENADOS
--creando un procedimiento almacenado que inserta un registro en la tabla tclien
te
CREATE PROCEDURE spu_ADDCLIENTE
@codigo int,
@nombre varchar(255),
@nif varchar(10),
@telefono varchar(9),
@movil varchar(9)
INSERT INTO tclientes(codigo,nombre,apellidos,nif,telefono,movil)
VALUES ()

También podría gustarte