Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1.  
  2. -- COMO ROOT PARA CREAR LA BBDD Y EL USUARIO
  3.  
  4. -- CREAMOS LA BBDD PARA UTF-8 COLLATION EN ESPAÑOL
  5. CREATE DATABASE gestion_reservas \
  6. CHARACTER SET utf16 COLLATE utf16_spanish_ci;
  7.  
  8. -- CAMBIAMOS LA BBDD ACTIVA
  9. USE gestion_reservas;
  10.  
  11.  
  12. -- CREAMOS LAS TABLAS
  13. CREATE TABLE `usuario` (
  14. `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  15. `username` varchar(12) NOT NULL,
  16. `password` varchar(20) NOT NULL,
  17. `email` varchar(50) NOT NULL
  18. ) ENGINE='InnoDB';
  19.  
  20. CREATE TABLE `instalacion` (
  21. `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  22. `nombre` varchar(50) NOT NULL
  23. ) ENGINE='InnoDB';
  24.  
  25. CREATE TABLE `horario` (
  26. `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  27. `instalacion` int(11) NOT NULL,
  28. `inicio` time NOT NULL,
  29. `fin` time NOT NULL,
  30. FOREIGN KEY (`instalacion`) REFERENCES `instalacion` (`id`) ON DELETE CASCADE
  31. ) ENGINE='InnoDB';
  32.  
  33. CREATE TABLE `reserva` (
  34. `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  35. `usuario` int(11) NOT NULL,
  36. `horario` int(11) NOT NULL,
  37. `fecha` date NOT NULL,
  38. FOREIGN KEY (`usuario`) REFERENCES `usuario` (`id`),
  39. FOREIGN KEY (`horario`) REFERENCES `horario` (`id`)
  40. ) ENGINE='InnoDB';
  41.  
  42.  
  43.  
  44. DROP TRIGGER IF EXISTS reserva_pasado;
  45.  
  46. DELIMITER $$
  47. CREATE TRIGGER `reserva_pasado`
  48. BEFORE DELETE ON `reserva` FOR EACH ROW
  49. BEGIN
  50. IF ( OLD.`fecha` < CURDATE())
  51. THEN
  52. SIGNAL sqlstate '45004'
  53. SET message_text = 'No se permite eliminar una fecha pasada.';
  54. END IF;
  55. END;
  56. $$
  57.  
  58.  
  59. DROP TRIGGER IF EXISTS reserva_actualizar_pasado;
  60.  
  61. DELIMITER $$
  62. CREATE TRIGGER `reserva_actualizar_pasado`
  63. BEFORE UPDATE ON `reserva` FOR EACH ROW
  64. BEGIN
  65. IF ( OLD.`fecha` <= CURDATE())
  66. THEN
  67. SIGNAL sqlstate '45004'
  68. SET message_text = 'No se permite actualizar una reserva ya pasada o en el día de la misma.';
  69. END IF;
  70. END;
  71. $$
  72.  
  73.  
  74.  
  75. DROP TRIGGER IF EXISTS reserva_semanal;
  76.  
  77. DELIMITER $$
  78. CREATE TRIGGER `reserva_semanal`
  79. BEFORE INSERT ON `reserva` FOR EACH ROW
  80. BEGIN
  81. IF ( NEW.`fecha` < CURDATE())
  82. THEN
  83. SIGNAL sqlstate '45002'
  84. SET message_text = 'No se permite reservar en una fecha anterior a la actual.';
  85. ELSEIF ( NEW.`fecha` > DATE_ADD(CURDATE(), INTERVAL 14 DAY) )
  86. THEN
  87. SIGNAL sqlstate '45003'
  88. SET message_text = 'No se permite reservar con más de dos semanas de antelación.';
  89. END IF;
  90. END;
  91. $$
  92.  
  93. DROP TABLE user;
  94.  
  95. CREATE TABLE user (
  96. `id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  97. `user` varchar(100),
  98. `pwd` varchar(100),
  99. `token` varchar(255),
  100. `token_valid_from` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
  101. `token_valid_until` TIMESTAMP NOT NULL DEFAULT (TIMESTAMPADD(DAY,21,CURRENT_TIMESTAMP()))
  102. -- `token_valid_until` TIMESTAMP NOT NULL DEFAULT (CURRENT_DATE + INTERVAL 21 DAY)
  103. ) ENGINE = 'InnoDB';
  104.  
  105. INSERT INTO user(user,pwd) VALUES ('admin','admin');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement