【发布时间】:2021-05-31 08:43:23
【问题描述】:
你好 Stackoverflowers!
我是 SQL/DataOracleModeler 的新手,我已经到了无法继续前进的地步。
解释一下:
我有一个表“车辆”作为超类型,“赛格威”“自行车”和“汽车”作为子类型。
我为它们添加了一个鉴别器(S 代表赛格威,F 代表 Fahhrad,A 代表 Auto(德语翻译))
我现在的问题是:
Dbeaver 不喜欢我的触发器。
先来一张图给大家看的更清楚: Model of my Super/Sub-types
这里是其中一个触发器:
INSERT OR
UPDATE OF Inventar_ID ON Segway FOR EACH ROW DECLARE d CHAR (8);
BEGIN
SELECT A.FahrzeugArt_FahrzeugArt
INTO d
FROM Fahrzeug A
WHERE A.Inventar_ID = :new.Inventar_ID;
IF (d IS NULL OR d <> 'S') THEN
raise_application_error(-20223,'FK Segway_Fahrzeug_FK in Table Segway violates Arc constraint on Table Fahrzeug - discriminator column FahrzeugArt_FahrzeugArt doesn''t have value ''S''');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END;
/
但是当我启动 SQL 时,它要求我绑定参数?首先,为什么?
真正的问题是。我不能只说:
INSERT INTO AUTO VALUES (blablabla)
因为他说: 找不到父键。
没问题 - 我可以创建一个 ID 为 1 的父级“车辆”,然后说 INSERT INTO AUTO (ID1,...) 但是当我 SELECT ID1 我得到一个所有列都是两倍的表。第一个都是 NULL 值,第二个是用语句 INSERT INTO AUTO (ID1,...) 填充的
但是 Super/Subtypes 的目标不应该是这样的吗?
我真的很沮丧,因为我们与 Data Oracle Modeler 和 DBeaver 一起工作,所以无法再在 Internet 上进行查找,而且找不到太多东西。
现在我要问你,我在这里错过了什么?
是的,我查看了论坛,但在这里我并没有真正找到类似的问题。 我希望任何人都可以提供帮助,我很抱歉打扰。提前致谢!
【问题讨论】:
标签: sql triggers dbeaver subtype