如何创建可以将表B中的外键值插入表A的触发器

时间:2014-11-29 03:16:24

标签: mysql

CREATE DATABASE Ebooks;

CREATE TABLE Usuario (
     Email VARCHAR (320) PRIMARY KEY, 
     NombreUsuario VARCHAR (70), 
     Contrasena VARCHAR (20), 
     Nombre VARCHAR (30), 
     Apellido VARCHAR (30), 
     IdDireccion INT, 
     FechaNac DATE, 
     Sexo VARCHAR (1), 
     Celular BIGINT, 
     IdPreferencias INT, 
     IdTarjeta INT
);

CREATE TABLE Direccion (
     IdDireccion INT PRIMARY KEY AUTO_INCREMENT, 
     CalleyNumero VARCHAR (120), 
     Colonia VARCHAR (30), 
     CP INT, 
     Ciudad VARCHAR (30), 
     Estado VARCHAR (20), 
     Pais VARCHAR  (20)
);

我想创建一个AFTER INSERT ON Direccion Trigger,它允许我获取Direccion.IdDireccion值并将其插入Usuario.IdDireccion。

2 个答案:

答案 0 :(得分:1)

NEW表上插入值后,您可以使用关键字Direccion,例如:

DELIMITER //
CREATE TRIGGER trg_insert_usuario AFTER INSERT ON Direccion
FOR EACH ROW
BEGIN
    INSERT INTO `Usuario` 
    VALUES('random', '1234', '1234', '6532', '12345', NEW.IdDireccion,
          '123', '12', '1234', '124', '1234');
END //
DELIMITER ;

答案 1 :(得分:0)

请参阅20.3.1 Trigger Syntax and Examples以供参考。

你需要这样的东西:

CREATE TRIGGER ins_dir AFTER INSERT ON Direccion
FOR EACH ROW INSERT INTO Usuario SET IdDireccion=NEW.IdDireccion

虽然这会插入一个新行,其中除IdDireccion之外的所有字段都为空,特别是Usuario的主键也应包含在INSERT语句中。


根据以下评论更新:

CREATE TRIGGER ins_dir AFTER INSERT ON Direccion
FOR EACH ROW UPDATE Usuario SET IdDireccion=NEW.IdDireccion WHERE Email=<THE EMAIL>