gpt4 book ai didi

sql - Oracle Database Enforce CHECK 对多个表

转载 作者:行者123 更新时间:2023-12-04 15:27:50 25 4
gpt4 key购买 nike

我正在尝试在多个表的 ORACLE 数据库中强制执行 CHECK 约束

CREATE TABLE RollingStocks ( 
Id NUMBER,
Name Varchar2(80) NOT NULL,
RollingStockCategoryId NUMBER NOT NULL,
CONSTRAINT Pk_RollingStocks Primary Key (Id),
CONSTRAINT Check_RollingStocks_CategoryId
CHECK ((RollingStockCategoryId IN (SELECT Id FROM FreightWagonTypes))
OR
(RollingStockCategoryId IN (SELECT Id FROM LocomotiveClasses)))
);

...但我收到以下错误:

*Cause: Subquery is not allowed here in the statement. *Action: Remove the subquery from the statement.



你能帮我理解是什么问题或如何达到同样的结果吗?

最佳答案

Oracle 中的检查约束非常有限。要按照您的建议进行检查,您必须实现 PL/SQL trigger .

我的建议是完全避免触发。实现一个修改数据库并包括检查的存储过程。存储过程更易于维护,尽管它们实现起来稍微困难一些。但从长远来看,将前端从直接表访问更改为存储过程访问会带来很多返回。

关于sql - Oracle Database Enforce CHECK 对多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com