如何将MySQL表的列链接到列是其他表?

时间:2015-07-26 21:53:51

标签: mysql

我有一个MySQL数据库,其中包含一个名为uploads的表。该表格包含以下列:
id(PK),视频,音频,图像。

我在同一个数据库中设置了3个其他表(视频,音频,图像)。它们各有以下列:
视频:id(PK),视频
audios:id(PK),audio
图像:id(PK),图像

是否可以让第一个表格的列自动填充相应其他表格中的任何数据。

例如:如果我添加' image.jpg'到图像表中的图像列,' image.jpg'将自动添加到上传数据库中的图像列。

1 个答案:

答案 0 :(得分:1)

Mysql triggers将帮助您解决问题

如果你这样创建你的表:

CREATE TABLE `uploads` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `audio` varchar(45) DEFAULT NULL,
  `video` varchar(45) DEFAULT NULL,
  `image` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

您可以使用以下内容:

DELIMITER //

CREATE TRIGGER populate_after_insert
AFTER INSERT
   ON uploads FOR EACH ROW

BEGIN
    DECLARE latestAudio varchar(50);
    DECLARE latestVideo varchar(50);
    DECLARE latestImage varchar(50);

    SELECT uploads.audio FROM uploads GROUP BY id DESC LIMIT 1 INTO latestAudio;
SELECT uploads.video FROM uploads GROUP BY id DESC LIMIT 1 INTO latestVideo;
    SELECT uploads.image FROM uploads GROUP BY id DESC LIMIT 1 INTO latestImage;

    INSERT INTO images(id, image) VALUES(null, latestImage);
    INSERT INTO audios(id, audio) VALUES(null, latestAudio);
    INSERT INTO videos(id, video) VALUES(null, latestVideo);
END; //

DELIMITER ;