- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试定义三个数据库表 - USERNAME、USER_SESSIONS 和 TOOLBOX_DIRS_REGISTERED。我可以毫无问题地定义前两个,但最后一个让我有点悲伤。理想情况下,我想将其定义为下面的代码块所示,但我认为子查询不能在检查约束内使用?
下面的代码块显示了我希望如何定义表 TOOLBOX_DIRS_REGISTERED。代码块的开头还包含一些注释,试图解释我对表定义使用的某些约束的想法。
-- Constraint : USERNAME_FK
-- ========================
--
-- USERNAME must contain a username which has been added to the table USERNAME.
--
-- Constraint : USER_SESSION_ID_FK
-- ===============================
--
-- USER_SESSION_ID must contain a user session ID which has been added to the table
-- USER_SESSION.
--
-- Constraint : check_user_session_id
-- ==================================
--
-- In addition to the above constraint, USER_SESSION_ID must also belong to the
-- username which is contained within USERNAME.
create table
TOOLBOX_DIRS_REGISTERED
(
DIRNAME varchar2(100) not null,
USERNAME varchar2(32) not null,
USER_SESSION_ID varchar2(32) not null,
AUTO_REGISTER char not null,
constraint
TOOLBOX_DIRS_REGISTERED_PK
primary key (DIRNAME),
constraint
USERNAME_FK
foreign key (USERNAME)
references USERS(USERNAME),
constraint
USER_SESSION_ID_FK
foreign key (USER_SESSION_ID)
references USER_SESSIONS(USER_SESSION_ID),
constraint
check_user_session_id
check
(
USERNAME in
(
select USERNAME from USER_SESSIONS
where USER_SESSIONS(USER_SESSION_ID) = USER_SESSION_ID
)
)
);
有谁知道解决这个问题的方法,即在检查约束“check_user_session_id”的定义中使用子查询?我在 Stackoverflow 上读到,在这种特殊情况下可以使用物化 View 代替子查询。问题是,如果我使用物化 View ,那么我想确保它在执行检查约束时是最新的。所以我所做的就是实现物化 View 以及在物化 View 上调用 dbms_mview.refresh 的触发器。这一切都很好,只是 Oracle 提示它无法在触发器中 COMMIT。呃!它给我的确切信息是;
ERROR at line 2:
ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2760
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2740
ORA-06512: at "SYSTEM.SIMULAB_MVIEW", line 19
ORA-06512: at "SYSTEM.TRIG_TOOLBOX_DIRS_REGISTERED", line 3
ORA-04088: error during execution of trigger 'SYSTEM.TRIG_TOOLBOX_DIRS_REGISTERED'
我假设 Oracle 在刷新物化 View 后尝试自动执行提交,这就是它所提示的?
我的触发器定义如下;
create or replace trigger TRIG_TOOLBOX_DIRS_REGISTERED
before insert or update on
TOOLBOX_DIRS_REGISTERED
begin
-- Invoke the PL/SQL Package procedure simulab_mview.refresh_mview
simulab_mview.refresh_mview;
end;
而 PL/SQL 包 simulab_mview 定义如下;
create or replace
package
simulab_mview
as
procedure
refresh_mview;
end;
/
create or replace package body
simulab_mview
as
procedure
refresh_mview
as
begin
-- I have a strong suspicion that dbms_mview.refresh might cause a commit to
-- be executed. This would make sense, as the RDBMS would need to execute a
-- commit so that other clients could see the result of the refresh.
dbms_mview.refresh('mat_view', 'C');
end;
end;
/
有人对此有什么想法吗?有没有更简单的方法来做我想做的事情,我应该不使用物化 View ,不应该使用触发器吗?
对此的任何帮助甚至想法都将不胜感激。如果有人确实能够就此事提供任何帮助或想法,那么我要提前感谢他们的帮助。
祝你有美好的一天。
最佳答案
根据 Oracle 11.2 docs on CHECK constraints
Restrictions on Check Constraints
Check constraints are subject to the following restrictions:
• Conditions of check constraints cannot contain the following constructs:
◦Subqueries and scalar subquery expressions
如果您想验证 TOOLBOX_DIRS_REGISTERED 和 USER_SESSIONS 之间的 USER_SESSION_ID 和 USERNAME,我建议您在 USER_SESSIONS(USER_SESSION_ID, USERNAME) 上创建一个 UNIQUE 键,然后在 TOOLBOX_DIRS_REGISTERED(USER_SESSION_ID, USERNAME) 上创建一个外键到 USER_SESSIONS(USER_SESSION_ID) ,用户名)。
分享并享受。
关于sql - Oracle 11g 第 2 版 : Can a sub-query be used within a create table check constraint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821504/
我在产品类别和子类别网站上工作,可以创建的子类别数量是无限的,这意味着我们可以自己拥有子类别的子类别。一切正常,我只是有一个问题:假设“PRODUCT 1”属于“SUB SUB CATEGORY 1”
我正在学习OCaml,并在代码2022的到来中努力工作。。但似乎读取input.txt文件会导致一些问题。。我收到了这个奇怪的错误,它来自于函数分数。尤其是那个叫得分手HD的表达。不过,当我手动将LI
我有一个奇怪的行为(对于 Python 程序员)子例程,它简化如下: use strict; use Data::Dumper; sub a { my @x; sub b { push @x,
在此页上 http://bit.ly/T3yJIH , drupal 的 Nice Menu 模块不能正确显示子子菜单。如果转到菜单中的第一项,然后转到子菜单中的第一项,就可以看到它。 (Facili
我需要在我的站点内创建一个子结构,我在其中拥有: 实际上我是通过 Javascript 来完成的(伪代码):SUB_Content.height = ParentDiv.height - Sub_He
我有一个与子菜单一起使用的 CSS 手册。我想知道如何向它添加子子菜单。例如,我将鼠标悬停在主菜单项上并弹出子菜单,然后我将鼠标悬停在子菜单项上并弹出另一个子菜单。这是我现在使用的 JS Fiddle
我有一个关于 navmenu 的问题我不能选择导航菜单的 sub sub ul,如果我会做什么它会影响 3.ul。这是一个 wordpress 菜单我没有机会使用类或菜单的 ID。提前感谢您的帮助。
我创建了一个带有 2 级子菜单的简单导航。我正在寻找“sub sub”选项以显示在其父项的右侧而不是下方。对于 CSS 的任何帮助,我将不胜感激。下面是 html 和 css 以及 JS fiddle
我对 VBA、这个论坛和编程很陌生。我有一个工作表,我已经设法根据我的要求谷歌并调整某些代码行。 我的问题是我总共有三个潜艇,必须逐步运行每个 VBA 脚本。我希望将所有三个 VBA 脚本合二为一。
我使用 sub 调用作为另一个 sub 的参数。示例代码: test(isInString(), 'second parameter', 'third parameter'); sub test {
我想使用 HTML ui->FresBox->setText("fres"); 但它在 QCheckbox 中不起作用。如果您使用标签,它会很好用。有什么不同以及如何在 QCheckbox 中使用 H
我没有遇到这个问题,但在处理相关问题时想到了这个问题。让我们: logging = 'something' # bad naming decision import logging as lg
我正在查看 Redis pubsub,消费者是 2-4 节点自动缩放组的一部分(HA 原因) 也许我遗漏了一些明显的东西,但是 Redis pubsub 中是否有某种机制可以管理订阅者/消费者收到的重
对你们来说应该是一个快速和简单的,为什么这不起作用? 代码限制用户只能在文本框中输入文本。 它工作正常,但我有大约 50 个文本框,所以会更干净,更容易调用。 但是,这样做,限制不再起作用 Priva
(编辑)TL; DR :我的问题是,尽管Win32 API定义的是真实的整数常量(如平台SDK header 中一样),而Win32 Perl包装器将它们定义为subs。从而引起一线解析的误解。 在单
我有一个使用 Jersey 实现 REST API 的 Web 应用程序。 Web 容器 id Tomcat 以下是 API 的摘要: /rest/patients 获取患者元数据列表。 /rest/
我与 Czech 一起工作Python 3.4 中的重音文本。 调用 re.sub()用正则表达式对重音句子进行替换效果很好,但使用用 re.compile() 编译的正则表达式然后调用regex.s
对于我的一个新项目,我必须创建一个包含主类别、子类别和子子类别的类别页面。例如; 互联网 互联网 > 发展 互联网 > 开发 > 移动应用 在此类别中,您可以找到有关这些内容的网站。我必须为每个网站提
表1 - 客户数据 c_id(整数) 名称(varchar) 表2 - account_data a_id(整数) c_id (int) -> 使用customer_data。c_id plan_id
我有一些位图文件(jpeg、png、...),我想编写一个 C++ 程序,将这些位图文件连接到 pes 流(mpeg-2 格式),然后创建一个子文件(.sub/. idx:vobsub 字幕文件)。
我是一名优秀的程序员,十分优秀!