Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
MYSQL: TRIGGER cambiar AFTER por BEFORE https://es.stackoverflow.com/...
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
/*MYSQL: TRIGGER cambiar AFTER por BEFORE https://es.stackoverflow.com/q/258213/29967*/ /* -- ATENCIÓN NO USE DROP TABLE CON SUS TABLAS REALES -- YA QUE DROP TABLE BORRARÁ SUS DATOS -- DROP TABLE SE USA AQUÍ SÓLO PARA PODER PROBAR LOS DATOS */ SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS cliente_20190426; DROP TABLE IF EXISTS cuenta_20190426; DROP TABLE IF EXISTS prestamo_20190426; DROP TABLE IF EXISTS impostor_20190426; DROP TABLE IF EXISTS prestatario_20190426; DROP TABLE IF EXISTS prueba_20190426; SET FOREIGN_KEY_CHECKS=1; /* NO COPIE LA SENTENCIA ^ DROP TABLE ^ EN SUS DATOS REALES */ CREATE TABLE IF NOT EXISTS cliente_20190426 ( id CHAR(10) NOT NULL, nombre CHAR(50), calle CHAR(50), ciudad CHAR(50), PRIMARY KEY(id) )ENGINE=INNODB; INSERT INTO cliente_20190426 (id,nombre) VALUES ('1','Pedro'), ('2','María'); CREATE TABLE IF NOT EXISTS cuenta_20190426 ( numero CHAR(5) NOT NULL, saldo NUMERIC(10,2) NOT NULL, PRIMARY KEY(numero) )ENGINE=INNODB; CREATE TABLE IF NOT EXISTS prestamo_20190426 ( numero CHAR(5) NOT NULL, cantidad NUMERIC(10,2) NOT NULL, PRIMARY KEY(numero) )ENGINE=INNODB; INSERT INTO prestamo_20190426 (numero, cantidad) VALUES ('00001',10.20),('00002',5.99); CREATE TABLE IF NOT EXISTS impositor_20190426 ( id_cliente CHAR(10), numero_cuenta CHAR(5), PRIMARY KEY(id_cliente, numero_cuenta), FOREIGN KEY(id_cliente) REFERENCES cliente_20190426(id) ON DELETE CASCADE, FOREIGN KEY(numero_cuenta) REFERENCES cuenta_20190426(numero) ON DELETE CASCADE )ENGINE=INNODB; CREATE TABLE IF NOT EXISTS prestatario_20190426 ( id_cliente CHAR(10), numero_prestamo CHAR(5), PRIMARY KEY(id_cliente, numero_prestamo), FOREIGN KEY(id_cliente) REFERENCES cliente_20190426(id) ON DELETE CASCADE, FOREIGN KEY(numero_prestamo) REFERENCES prestamo_20190426(numero) ON DELETE CASCADE )ENGINE=INNODB; INSERT INTO prestatario_20190426 (id_cliente,numero_prestamo) VALUES ('1','00001'); CREATE TABLE prueba_20190426 ( id int not null auto_increment primary key, usuario CHAR(10) not null, restantes int not null )ENGINE=INNODB; /* TRIGGER -------------------------------------------------*/ DROP TRIGGER IF EXISTS addNewMessage; -- DELIMITER $$ CREATE TRIGGER addNewMessage BEFORE DELETE ON prestamo_20190426 FOR EACH ROW BEGIN DECLARE usuario CHAR(10); DECLARE prestamosRestantes INT; SET usuario = (SELECT prestatario.id_cliente FROM prestatario_20190426 prestatario WHERE prestatario.numero_prestamo = OLD.numero LIMIT 1 ); SET prestamosRestantes = (SELECT COUNT(*) FROM prestamo_20190426 pr INNER JOIN prestatario_20190426 pt ON pr.numero=pt.numero_prestamo INNER JOIN cliente_20190426 c ON pt.id_cliente = c.id ); INSERT INTO prueba_20190426 (usuario , restantes) values (usuario , prestamosRestantes); END; -- $$ -- DELIMITER ; /*Antes de borrar*/ SELECT 'Antes de borrar' as 'ANTES'; SELECT * FROM prestamo_20190426; SELECT COUNT(*) filas_prueba FROM prueba_20190426; DELETE FROM prestamo_20190426 WHERE numero='00001'; SELECT 'Despúes de borrar' as 'DESPUÉS'; SELECT * FROM prueba_20190426; SELECT * FROM prestamo_20190426;
absolute service time: 2,34 sec
edit mode
|
history
ANTES
1
Antes de borrar
numero
cantidad
1
00001
10,20
2
00002
5,99
filas_prueba
1
0
DESPUÉS
1
Despúes de borrar
id
usuario
restantes
1
1
1
1
numero
cantidad
1
00002
5,99