【问题标题】:SQL Oracle - Double CONSTRAINT NOT NULLSQL Oracle - 双约束不为空
【发布时间】:2018-10-05 16:12:32
【问题描述】:

我需要在 PL/SQL 中创建一个表,并且该表需要在两个属性上有一个 CONSTRAINT。我解释一下:

“com_name”和“com_nickname”这两个对象之一需要检查,如果两者都可以,但至少需要填写一个。

我是初学者,我不明白如何让它发挥作用

*

CONSTRAINT ch_com_name_nickname CHECK (com_name = NOT NULL 或 com_nickname = NOT NULL)

*

这不起作用。

【问题讨论】:

  • '不工作'不是很有帮助,最好说出你的期望和实际得到的。但是你需要IS NOT NULL,而不是= NOT NULL。还有你为什么提到 PL/SQL?
  • 还有see this,这是PostgreSQL,不是Oracle,而是相同的语法'and this

标签: oracle oracle-sqldeveloper


【解决方案1】:

正确的语法是column_name IS NOT NULL。你不需要 =。

【讨论】:

    【解决方案2】:

    你为什么要通过 CONSTRAINT 来做?!

    这种任务不是这样解决的。

    您可以简单地在您的逻辑中检查它(在过程或函数中)。

    【讨论】:

    • +1 我刚开始学习SQL,所以不知道怎么用别人的东西,这周我会努力改进我的代码!谢谢你的建议!
    • 检查约束是正确的。让应用程序逻辑确保它插入正确的东西很好,但它应该是以及一个检查约束,而不是一个。有一个检查约束 (a) 如果应用程序逻辑以某种方式被破坏,并且 (b) 如果应用程序被绕过 - 如果有人直接插入到表中,它仍然适用。
    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多