Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Creacion triggers

Estas en el tema de Creacion triggers en el foro de Mysql en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original CREATE DATABASE IF NOT EXISTS hotel ;     USE hotel ;         DROP TABLE IF ...
  #1 (permalink)  
Antiguo 01/02/2013, 11:32
Avatar de abeltxu  
Fecha de Ingreso: enero-2013
Ubicación: Segovia
Mensajes: 10
Antigüedad: 11 años, 3 meses
Puntos: 0
Creacion triggers

Código MySQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS hotel;
  2.     USE hotel;
  3.    
  4.     DROP TABLE IF EXISTS reserva;
  5.     DROP TABLE IF EXISTS es_incluido;
  6.     DROP TABLE IF EXISTS limpia;
  7.     DROP TABLE IF EXISTS proveedor;
  8.     DROP TABLE IF EXISTS factura_proveedor;
  9.     DROP TABLE IF EXISTS servicio;
  10.     DROP TABLE IF EXISTS usa_a;
  11.     DROP TABLE IF EXISTS factura;
  12.     DROP TABLE IF EXISTS formadepago;
  13.     DROP TABLE IF EXISTS habitacion;
  14.     DROP TABLE IF EXISTS precio;
  15.     DROP TABLE IF EXISTS cliente;
  16.     DROP TABLE IF EXISTS empleado;
  17.  
  18.      
  19.      
  20.     CREATE TABLE formadepago (
  21.     Id ENUM ('Talon', 'Efectivo', 'Tarjeta'),
  22.     Interes FLOAT(3,2) UNIQUE,
  23.         CONSTRAINT PK_formadepago PRIMARY KEY (Id) ) ENGINE=INNODB;
  24.        
  25.     CREATE TABLE cliente (
  26.     DNI CHAR(9) NOT NULL,
  27.     Nombre CHAR(50),
  28.     Apellidos CHAR(50),
  29.     Domicilio CHAR(50),
  30.     Telefono INT(9),
  31.     Anterioridad ENUM ('Si','No'),
  32.         CONSTRAINT PK_cliente PRIMARY KEY (DNI) ) ENGINE=INNODB;
  33.        
  34.     CREATE TABLE precio (
  35.     Tipo ENUM ('Individual','Doble') NOT NULL,
  36.     CONSTRAINT PK_precio PRIMARY KEY (Tipo) ) ENGINE=INNODB;
  37.      
  38.     CREATE TABLE habitacion (
  39.     Numero INT(3) NOT NULL,
  40.     Superficie INT(3),
  41.     Bar ENUM ('Si','No'),
  42.     Terraza ENUM ('Si','No'),
  43.     Banio ENUM ('Si','No'),
  44.     TV ENUM ('Si','No'),
  45.     N_camas INT(1),
  46.     Estado ENUM ('Libre','Ocupada') NOT NULL,
  47.     Tipo ENUM ('Individual','Doble') NOT NULL,
  48.         CONSTRAINT FK_habitacion_precio FOREIGN KEY (Tipo) REFERENCES precio(Tipo),
  49.         CONSTRAINT PK_habitacion PRIMARY KEY (Numero) ) ENGINE=INNODB;
  50.      
  51.     CREATE TABLE factura (
  52.     Codigo_f INT(5) NOT NULL,
  53.     Fecha_entrada DATE,
  54.     Fecha_salida DATE,
  55.     Importe_total FLOAT(6,2),
  56.     Supletoria ENUM ('Si','No'),
  57.     Id ENUM ('Talon', 'Efectivo', 'Tarjeta') NOT NULL,
  58.     DNI CHAR(9) NOT NULL,
  59.     Numero INT(3) NOT NULL,
  60.         CONSTRAINT PK_factura PRIMARY KEY (Codigo_f),
  61.         CONSTRAINT FK_factura_formadepago FOREIGN KEY (Id) REFERENCES formadepago(Id),
  62.         CONSTRAINT FK_factura_cliente FOREIGN KEY (DNI) REFERENCES cliente(DNI),
  63.         CONSTRAINT FK_factura_habitacion FOREIGN KEY (Numero) REFERENCES habitacion(Numero)) ENGINE=INNODB;
  64.      
  65.     CREATE TABLE empleado (
  66.     N_registro INT(3) NOT NULL,
  67.     Nombre CHAR(50),
  68.     Fecha_incorporacion DATE,
  69.     Sueldo FLOAT (6,2),
  70.     NIF CHAR(9) NOT NULL,
  71.     Codigo_s INT(5) NOT NULL,  
  72.         CONSTRAINT PK_empleado PRIMARY KEY (N_registro) ) ENGINE=INNODB;
  73.        
  74.     CREATE TABLE proveedor (
  75.     NIF CHAR(9) NOT NULL,
  76.     Nombre_comercial CHAR(50) UNIQUE,
  77.     Direccion CHAR(50),
  78.     N_registro INT(3) NOT NULL,
  79.     Codigo_fp INT(5) NOT NULL,
  80.         CONSTRAINT PK_proveedor PRIMARY KEY (N_registro),
  81.         CONSTRAINT FK_proveedor_empleado FOREIGN KEY (N_registro) REFERENCES empleado(N_registro)) ENGINE=INNODB;
  82.      
  83.     CREATE TABLE factura_proveedor (
  84.     Codigo_fp INT(5) NOT NULL,
  85.     Fecha DATE,
  86.     Importe FLOAT(6,2),
  87.     Encargado CHAR(50),
  88.     NIF CHAR(9) NOT NULL,
  89.         CONSTRAINT PK_factura_proveedor PRIMARY KEY (Codigo_fp) ) ENGINE=INNODB;
  90.      
  91.     CREATE TABLE servicio (
  92.     Codigo_s INT(9),
  93.     Descripcion CHAR(50) UNIQUE,
  94.     N_registro INT(3) NOT NULL,
  95.     CONSTRAINT PK_servicio PRIMARY KEY (Codigo_s),
  96.     CONSTRAINT FK_servicio_empleado FOREIGN KEY (N_registro) REFERENCES empleado(N_registro) ) ENGINE=INNODB;
  97.      
  98.      
  99.     CREATE TABLE limpia (
  100.     Fecha DATE,
  101.     Numero INT(3) NOT NULL,
  102.     N_registro INT(3) NOT NULL,
  103.         CONSTRAINT PK_limpia PRIMARY KEY (Fecha),
  104.         CONSTRAINT FK_limpia_habitacion FOREIGN KEY (Numero) REFERENCES habitacion(Numero),
  105.         CONSTRAINT FK_limpia_empleados FOREIGN KEY (N_registro) REFERENCES empleado(N_registro) ) ENGINE=INNODB;
  106.        
  107.     CREATE TABLE usa_a (
  108.     Fecha DATE NOT NULL,
  109.     Codigo_s INT(5),
  110.     Codigo_s_usado INT(5),
  111.         CONSTRAINT PK_usa_a PRIMARY KEY (codigo_s,codigo_s_usado,fecha) ) ENGINE=INNODB;
  112.        
  113.     CREATE TABLE es_incluido (
  114.     Coste FLOAT(5,2),
  115.     Fecha DATE,
  116.     Codigo_f INT(5) NOT NULL,
  117.     Codigo_s INT(5) NOT NULL,
  118.     CONSTRAINT FK_es_incluido_codigo_f FOREIGN KEY (Codigo_f) REFERENCES factura(Codigo_f),
  119.     CONSTRAINT FK_es_incluido_codigo_s FOREIGN KEY (Codigo_s) REFERENCES servicio(Codigo_s),
  120.     PRIMARY KEY(Coste,Fecha)) ENGINE=INNODB;
  121.    
  122.     CREATE TABLE reserva (
  123.     Fecha_reserva DATE NOT NULL,   
  124.     Fecha_entrada DATE,
  125.     Fecha_salida DATE,
  126.     Estancia INT(3),
  127.     DNI CHAR(9) NOT NULL,
  128.     Numero INT(3) NOT NULL,
  129.     CONSTRAINT FK_reserva_cliente FOREIGN KEY (DNI) REFERENCES cliente(DNI),
  130.     CONSTRAINT FK_reserva_numero FOREIGN KEY (Numero) REFERENCES habitacion(Numero),
  131.     PRIMARY KEY (Fecha_reserva)) ENGINE=INNODB;


Teniendo este codigo en MySQL, me gustaria crear un trigger:
Este trigger funcionaria de la siguiente forma... Cuando yo elija una forma de pago (Talon, efectivo o tarjeta), automaticamente se le asigne un tanto por ciento de interes al importe total. Por ejemplo, si pago con talon, al importe total se le añadira un 1% y si pago con tarjeta, se añadiria un 2%, si pago en efectivo no se añadiria nada.

A su vez al importe total, deberemos añadirle un IVA del 21% (Creo que esto seria otro trigger)

Muchas gracias por vuestra colaboracion
Saludos

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:14.