MySQL未知列错误1054简单更新

时间:2016-02-02 21:57:08

标签: mysql mysql-workbench

使用MySQL工作台,我在尝试执行以下语句时遇到奇怪的行为:

UPDATE Jobs SET Customer = 'Ben' WHERE PO = 1011;

其输出为:错误代码:1054。未知列' Jobs.PO'在' where子句'

这里的目标是获取更新语句或等效语句来执行。我无法确定问题。以下陈述的特别奇怪之处在于:

SELECT * FROM Jobs;
SELECT PO FROM Jobs;
SELECT * FROM Jobs where PO = 1011;
SELECT PO FROM Jobs where PO = 1011;

所有功能完全符合预期。具体来说,没有错误,返回并显示所有要求的条目。为什么选择在没有1054错误的情况下执行,而更新可以<?p?

create table语句(如果它有用),通过工作台作为SQL脚本执行:

CREATE TABLE `Jobs` (
    PO MEDIUMINT NOT NULL,
    Part TINYINT UNSIGNED NOT NULL DEFAULT 1,
    `Last Dash` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
    Customer VARCHAR(80),
    Description VARCHAR(350),
    Completed DATE,
    Notes VARCHAR(350),
    CONSTRAINT pkJobs PRIMARY KEY (PO, Part)
);

EDIT :: 也许并不像我原先解释的那么简单。更新前有一个&#39;在桌子上触发。

DELIMITER //
DROP TRIGGER IF EXISTS JobsUp //
CREATE TRIGGER JobsUp BEFORE UPDATE ON Jobs FOR EACH ROW
BEGIN

    IF new.`Last Dash` < (SELECT MAX(Dash) 
        FROM Tracking AS t 
        WHERE new.PO = t.PO 
        AND new.Part = t.Part 
    ) THEN 

        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 
            'Cannot update last dash to value less than an assigned dash.'; 

    END IF;

END //
DELIMITER ;

1 个答案:

答案 0 :(得分:0)

想出来。数据库是根据之前的JobsUp触发器定义操作的,该触发器没有使用'new'关键字。重新创建触发器解决了这个问题。