我有2张桌子:mks_equipment
和mks_equipment_packs
。
mks_equipment
有:ID
,TypeName
,Brnand
mks_equipment_packs
有:packID
,RockShoes
,Helmet
。 RockShoes
和Helmet
都参考了mks_eqipment.ID
。
我想创建一个触发器,如果你试图添加ID
,将引发非头盔项目引入Helmet
中的mks_equipment_packs
列,这将引发异常。
这是触发器的代码:
IF (NEW.packid < 0 ) THEN
RAISE EXCEPTION 'It can not be a negative number!'; END IF;
IF((mks_equipment.type != 'RockShoes' ) AND (mks_equipment.ID = NEW.rockshoes)) THEN
RAISE EXCEPTION 'Wrong piece of equipment!';
END IF;
RETURN NEW;
这就是问题所在。如果我尝试qazxsw poi,
然后它说:
INSERT INTO mks_equipment_packs VALUES (31, 33, 84)
我该如何解决这个问题?谢谢。
附: tsak特别说:我不能在几个表中拆分我的mks_equipment表。这是禁止的。
Error: ERROR: missing FROM-clause entry for table "mks_equipment"
LINE 1: SELECT (mks_equipment.type != 'RockShoes') AND (mks_equipmen...
^
QUERY: SELECT (mks_equipment.type != 'RockShoes') AND (mks_equipment.ID = NEW.rockshoes)
CONTEXT: PL/pgSQL function mks_equipment_checks() line 5 at IF
是一个表的列,在这种情况下没有任何意义。您必须指定表中的多行中的哪一行。
你可能正在寻找像这样的结构
mks_equipment.type