I have a MySQL database for a car dealership. There are 3 types of users: A, C and P. What I am trying to do is that when a new data is inserted in the table users with type "P", it is also inserted in the suppliers table.
That is, when I add a provider-type user, a new element is also created in the provider table. In provider, the Provider ID corresponds to UserID. I do not know how to do the trigger to get it.
I leave a picture of the BBDD in case it helps.
What I have:
CREATE TRIGGER copy_to_proveedores
AFTER INSERT
ON usuariosFOR EACH ROW
BEGIN
DECLARE vUser int(10) unsigned;
SELECT UsuarioID INTO vUser;
INSERT INTO proveedor(ProveedorID) VALUES(vUser);
END;
I also leave the code to create the database.
-- phpMyAdmin SQL Dump
-- version 4.8.0
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 26-04-2018 a las 00:06:24
-- Versión del servidor: 5.7.21-log
-- Versión de PHP: 7.2.4
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de datos: 'concesionarioguerra'
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'administrador'
--
CREATE TABLE 'administrador' (
'AdministradorID' int(10) UNSIGNED ZEROFILL NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'administrador'
--
INSERT INTO 'administrador' ('AdministradorID') VALUES
(0000000001);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'concesionario'
--
CREATE TABLE 'concesionario' (
'ConcesionarioID' int(10) UNSIGNED ZEROFILL NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'concesionario'
--
INSERT INTO 'concesionario' ('ConcesionarioID') VALUES
(0000000003);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'pedidos'
--
CREATE TABLE 'pedidos' (
'ConcesionarioID' int(10) UNSIGNED ZEROFILL NOT NULL,
'ProductoID' int(10) UNSIGNED ZEROFILL NOT NULL,
'ProveedorID' int(10) UNSIGNED ZEROFILL NOT NULL,
'Fecha' date DEFAULT NULL,
'Confirmacion' char(1) DEFAULT 'N'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'pedidos'
--
INSERT INTO 'pedidos' ('ConcesionarioID', 'ProductoID', 'ProveedorID', 'Fecha', 'Confirmacion') VALUES
(0000000003, 0000000001, 0000000002, '2018-04-25', 'N');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'productos'
--
CREATE TABLE 'productos' (
'ProductoID' int(10) UNSIGNED ZEROFILL NOT NULL,
'ProveedorID' int(10) UNSIGNED ZEROFILL NOT NULL,
'Nombre' varchar(100) DEFAULT NULL,
'Precio' decimal(10,2) DEFAULT NULL,
'Stock' smallint(5) DEFAULT NULL,
'StockSeguridad' tinyint(4) DEFAULT NULL,
'Color' varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'productos'
--
INSERT INTO 'productos' ('ProductoID', 'ProveedorID', 'Nombre', 'Precio', 'Stock', 'StockSeguridad', 'Color') VALUES
(0000000001, 0000000002, 'Coche1', '1000.00', 50, 5, 'Azul'),
(0000000002, 0000000002, 'Coche2', '2000.00', 40, 4, 'Rojo');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'proveedor'
--
CREATE TABLE 'proveedor' (
'ProveedorID' int(10) UNSIGNED ZEROFILL NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'proveedor'
--
INSERT INTO 'proveedor' ('ProveedorID') VALUES
(0000000002);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla 'usuarios'
--
CREATE TABLE 'usuarios' (
'UsuarioID' int(10) UNSIGNED ZEROFILL NOT NULL,
'DNI' char(9) NOT NULL,
'Nick' varchar(20) NOT NULL,
'Email' varchar(100) DEFAULT NULL,
'Password' varchar(20) NOT NULL,
'Tipo' char(1) NOT NULL,
'NombreCompleto' varchar(100) DEFAULT NULL,
'Telefono' char(9) DEFAULT NULL,
'CuentaBancaria' char(24) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcado de datos para la tabla 'usuarios'
--
INSERT INTO 'usuarios' ('UsuarioID', 'DNI', 'Nick', 'Email', 'Password', 'Tipo', 'NombreCompleto', 'Telefono', 'CuentaBancaria') VALUES
(0000000001, '45689217Q', 'ppascr00', '[email protected]', '123', 'A', 'Pedro José Pascual Ruano', '123456789', '1852 9993 67 1716732024'),
(0000000002, '45689218Z', 'cortig00', '[email protected]', '123', 'P', 'César Ortigueira García', '123456789', '0689 5802 60 1374177426'),
(0000000003, '45689219H', 'agutiv00', '[email protected]', '123', 'C', 'Álvaro Gutiérrez Fernández', '123456789', '6480 0807 45 5785356090');
--
-- Índices para tablas volcadas
--
--
-- Indices de la tabla 'administrador'
--
ALTER TABLE 'administrador'
ADD PRIMARY KEY ('AdministradorID');
--
-- Indices de la tabla 'concesionario'
--
ALTER TABLE 'concesionario'
ADD PRIMARY KEY ('ConcesionarioID');
--
-- Indices de la tabla 'pedidos'
--
ALTER TABLE 'pedidos'
ADD PRIMARY KEY ('ConcesionarioID','ProductoID','ProveedorID'),
ADD KEY 'fk_concesionario_has_productos_concesionario1_idx' ('ConcesionarioID'),
ADD KEY 'fk_Pedidos_productos1_idx' ('ProductoID','ProveedorID');
--
-- Indices de la tabla 'productos'
--
ALTER TABLE 'productos'
ADD PRIMARY KEY ('ProductoID','ProveedorID'),
ADD UNIQUE KEY 'ProductoID_UNIQUE' ('ProductoID'),
ADD KEY 'fk_productos_proveedor1_idx' ('ProveedorID');
--
-- Indices de la tabla 'proveedor'
--
ALTER TABLE 'proveedor'
ADD PRIMARY KEY ('ProveedorID');
--
-- Indices de la tabla 'usuarios'
--
ALTER TABLE 'usuarios'
ADD PRIMARY KEY ('UsuarioID'),
ADD UNIQUE KEY 'UsuarioID_UNIQUE' ('UsuarioID'),
ADD UNIQUE KEY 'DNI_UNIQUE' ('DNI'),
ADD UNIQUE KEY 'Nick_UNIQUE' ('Nick');
--
-- AUTO_INCREMENT de las tablas volcadas
--
--
-- AUTO_INCREMENT de la tabla 'productos'
--
ALTER TABLE 'productos'
MODIFY 'ProductoID' int(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT de la tabla 'usuarios'
--
ALTER TABLE 'usuarios'
MODIFY 'UsuarioID' int(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
--
-- Restricciones para tablas volcadas
--
--
-- Filtros para la tabla 'administrador'
--
ALTER TABLE 'administrador'
ADD CONSTRAINT 'fk_administrador_usuarios1' FOREIGN KEY ('AdministradorID') REFERENCES 'usuarios' ('UsuarioID') ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Filtros para la tabla 'concesionario'
--
ALTER TABLE 'concesionario'
ADD CONSTRAINT 'fk_concesionario_usuarios1' FOREIGN KEY ('ConcesionarioID') REFERENCES 'usuarios' ('UsuarioID') ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Filtros para la tabla 'pedidos'
--
ALTER TABLE 'pedidos'
ADD CONSTRAINT 'fk_Pedidos_productos1' FOREIGN KEY ('ProductoID','ProveedorID') REFERENCES 'productos' ('ProductoID', 'ProveedorID') ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT 'fk_concesionario_has_productos_concesionario1' FOREIGN KEY ('ConcesionarioID') REFERENCES 'concesionario' ('ConcesionarioID') ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Filtros para la tabla 'productos'
--
ALTER TABLE 'productos'
ADD CONSTRAINT 'fk_productos_proveedor1' FOREIGN KEY ('ProveedorID') REFERENCES 'proveedor' ('ProveedorID') ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Filtros para la tabla 'proveedor'
--
ALTER TABLE 'proveedor'
ADD CONSTRAINT 'fk_proveedor_usuarios' FOREIGN KEY ('ProveedorID') REFERENCES 'usuarios' ('UsuarioID') ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;