我在制作触发器时遇到问题。每当我插入记录(casello)时,我都想在“nome1”中制作字段“nome”的“副本”。我收到此错误:
#1442 - 无法更新存储函数/触发器中的表“casello”,因为它已被调用此存储函数/触发器的语句使用。
我该如何解决?这是我的表的结构:
--
-- Struttura della tabella `casello`
--
CREATE TABLE IF NOT EXISTS `casello` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`posizione` double NOT NULL,
`nome` varchar(100) NOT NULL,
`nome1` varchar(100) DEFAULT NULL,
`modalita_pagamento` varchar(255) NOT NULL,
`servizio_assistenza` tinyint(1) DEFAULT NULL,
`l_nome` varchar(100) DEFAULT NULL,
`nome_autostrada` varchar(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `l_nome` (`l_nome`),
KEY `nome_autostrada` (`nome_autostrada`),
KEY `nome` (`nome`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
--
-- Dump dei dati per la tabella `casello`
--
INSERT INTO `casello` (`id`, `posizione`, `nome`, `nome1`, `modalita_pagamento`,
`servizio_assistenza`, `l_nome`, `nome_autostrada`) VALUES
(3, 35, 'napoli nord', NULL, 'contanti, carte, telepass', 1, 'caserta', 'a1'),
(4, 15, 'napoli sud', NULL, 'contanti, carte, telepass', 1, 'napoli', 'a1'),
(5, 310, 'roma nord', NULL, 'contanti, carte, telepass', 1, NULL, 'a1'),
(6, 280, 'roma sud', NULL, 'contanti, carte, telepass', 1, NULL, 'a1'),
(11, 25, 'palma campania', 'NULL', 'contanti, carte, telepass', 1, NULL, 'a30'),
(12, 30, 'sarno', 'NULL', 'contanti, carte, telepass', NULL, NULL, 'a30'),
(13, 35, 'nocera', NULL, 'contanti, carte, telepass', 1, NULL, 'a30');
--
-- Triggers `casello`
--
DROP TRIGGER IF EXISTS `cp nome nome1`;
DELIMITER //
CREATE TRIGGER `cp nome nome1` AFTER INSERT ON `casello`
FOR EACH ROW UPDATE casello
set casello.nome1=casello.nome
//
DELIMITER ;
PS当然,如果我这样做:
UPDATE casello
SET casello.nome1=casello.nome
作为一个简单的查询,它将起作用并复制数据。