MySQL:插入时导致错误1292(截断不正确的DOUBLE值)的触发器?

时间:2015-12-10 03:38:48

标签: mysql triggers

你能帮我解决错误吗?截断错误的DOUBLE值' MySQL 6.3中的错误代码(1292)?我已经搜索了一个稳定的小时,在所有类似的问题中找不到合适的答案:

我的任务是将触发器插入电影数据库。如果有人尝试更新现有值或将新值插入架构' made_money',则应确保该类别属于四个基类之一(请参阅代码)。如果它没有,则默认为" Action"。我为此构建并执行了两个触发器(因为我不知道如何将UPDATE和INSERT放入单个触发器中):

delimiter //
CREATE TRIGGER movie_categories_A BEFORE UPDATE ON made_money
FOR EACH ROW
BEGIN
    IF NEW.Category NOT IN ("Romantic", "Comedy", "Drama", "Action") THEN
        SET NEW.Category = "Action";
    END IF;
END;//
delimiter ;

delimiter //
CREATE TRIGGER movie_categories_B AFTER INSERT ON made_money
FOR EACH ROW
BEGIN
    IF Category NOT IN ("Romantic", "Comedy", "Drama", "Action") THEN
        SET Category = "Action";
    END IF;
END;//
delimiter ;

此外,还有一个新的

delimiter //
CREATE TRIGGER condensed_test AFTER INSERT ON made_money
FOR EACH ROW
BEGIN
    INSERT INTO log_data
        SET Movie = NEW.Movie AND Category=NEW.Category;
END;//
delimiter ;

这三个触发器都已执行,但我不确定它们是否是错误的。现在我的任务是在' made_money':

中插入一个新条目
INSERT INTO made_money (MOVIE,HOW_MUCH,DAY_OPENED,Category)
VALUES ('Iron Man', 1000000, '2008-05-02', 'ACTON');

我知道' ACTON'拼写错误(我想这是练习的一部分),但遗憾的是,这会导致以下错误:

Error Code: 1292. Truncated incorrect DOUBLE value: 'Iron Man'

如果我拼写动作'同样的事情也会发生。正确。如果您有任何想法,请告诉我。

最佳, 扬

2 个答案:

答案 0 :(得分:0)

尝试更改c的数据类型,尝试将其设为Movie, 你可以参考Similar issue

答案 1 :(得分:0)

  • 请检查数据类型'made_money.Movie'和'log_data.Movie'。
  • 请检查整理。