【问题标题】:Automatic trigger that copies data to another table formatted MySQL将数据复制到另一个格式化 MySQL 的表的自动触发器
【发布时间】:2016-08-17 01:17:48
【问题描述】:

所以我有一个问题。我不知道如何编写一个触发器,它不仅可以将数据从 (Table1) 发送到另一个表 (Table2),而且还可以编辑它以及在图片链接中看到 - 完整问题结束时的转换

use ptype;
create table IDVU (
`ID` int(8)  unsigned not null auto_increment ,
`VU` varchar(45) not null,
PRIMARY KEY (`id`),
KEY `ix_VU` (`VU`)
)ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

create table sep (
ID1 int(8) unsigned NOT NULL primary key auto_increment,
ID2 int(8) unsigned not null,
V varchar(45) not null,
U varchar(45) not null,
KEY `ix_ID2` (`ID2`),
CONSTRAINT `ID_IDVU_SEP` FOREIGN KEY (`ID2`) REFERENCES `IDVU` (`ID`) ON
DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

delimiter $$
CREATE TRIGGER `edit` AFTER INSERT 
ON `idvu` 
FOR EACH ROW BEGIN

    IF new.VU like '% %' THEN
        SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1) ,
            @U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
    else
        SET @V = 'NEW',@U = 'NEW';
    END IF;

    INSERT INTO sep (ID2,V, U) VALUES (new.ID,@V, @U);

END$$

delimiter ;

LOAD  DATA LOCAL INFILE '/Users/MarcisL/Desktop/MySQL faili/CSV/PTCSV.csv' ignore 
INTO TABLE IDVU FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';    

这是我想用作基础的代码,因为在我看来,触发器的工作方式与我现在想要的非常相似。像这样的代码工作 - 如果 table2(IDVU) 被更新而不是 table3(sep) 被更新并且来自 table2(IDVU) 的 Player(VU) 列被拆分为 Name(V),Surname(U) -问题结束时完全转换

最后我的整个脚本应该像这样工作 - Full transformation

【问题讨论】:

  • 请人帮忙!我已经尝试了很长时间......很久了!
  • 有什么问题?这是一个错误吗?还是触发器没有按预期工作?
  • 我不知道如何在触发器中编写 if part 所以如果 Table1 中有像 Number 这样的列,在一个字段中有 2 个值(4 和 8)。如何像表 2 中那样将这些值分成两行?

标签: php mysql sql triggers mysql-workbench


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多