【问题标题】:Unknown table from field list?字段列表中的未知表?
【发布时间】:2020-06-19 12:09:09
【问题描述】:

我试图为我的数据库编写一个触发过程。

    DELIMITER //
CREATE TRIGGER studenteGioca BEFORE INSERT ON Gioca
    FOR EACH ROW
    BEGIN
            if(new.anno - EXTRACT(YEAR FROM Studente.anno_iscrizione)<2)
        then SIGNAL SQLSTATE '71261'
            SET MESSAGE_TEXT='Lo studente non puo giocare nella squadra al primo anno di scuola';
        end if;
    END;
    //
DELIMITER ;

涉及的桌子是 GiocaStudente。在 gioca 中,我有一个名为 anno 的 int,它代表一年。在 Studente,我有一个名为 anno_iscrizione 的约会。 如果 anno 和 anno_iscrizione 的年份之间的差异小于两个,我想要做的是一个不允许在 Gioca 中插入的触发器。 但是当我在 Gioca 表中插入一些东西时,它给了我错误“字段列表中的未知表 'Studente'”

我应该如何纠正触发器?

【问题讨论】:

  • 没有 SELECT 就不能有 FROM,你需要一个 FROM 。我怀疑您还需要测试学生是否匹配。
  • 请添加您的表定义。

标签: mysql triggers insert


【解决方案1】:

您需要选择合适的 studente,如果 Studente.anno_iscrizione 是一个日期数据类型,那么 YEAR 函数就可以了。我在两个表中都假设了学生 ID 列的名称

if new.anno - (select YEAR(Studente.anno_iscrizione) from studente where studente.student_id = new.student_id) <2 

【讨论】:

  • 现在它不再给我错误了,但我可以插入不应该被接受的值
  • 请以文本形式添加示例数据和预期结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2019-12-09
  • 2023-03-14
  • 2020-10-27
相关资源
最近更新 更多