【发布时间】: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