【问题标题】:Oracle check constraint for varray type可变数组类型的 Oracle 检查约束
【发布时间】:2012-10-16 20:05:26
【问题描述】:

我有一个这样定义的自定义类型:

CREATE TYPE myType_t AS VARRAY(2) of char(10);

是否可以在 char(10) 类型上添加检查约束,以便 myType_t 项目遵守某个正则表达式?我试过像

CREATE TYPE myType_t AS VARRAY(2) of char(10)
( constraint c_myType_format check ( regexp_like(IdontKnowWhatToWriteHere, '[:digit:]{8}'));

这显然行不通...我想也许可以为

定义另一种类型
AS VARRAY(2) of myOtherType_t

但我又不知道在哪里放置正则表达式检查。

是的,我也尝试将约束添加到将使用我的类型的表中,但我找不到正确的语法。

【问题讨论】:

  • 为什么不把char(10)改成number(8)呢?诚然,不会阻止负数,但...
  • 好吧,我认为将它存储为数字的含义不同,尽管我知道这是可能的。
  • 很公平 - 我同意如果它实际上不是数字,而是一串数字,最好不要使用数字数据类型。在这种情况下,我会回避 TYPE,只对数据库列施加约束。

标签: oracle constraints


【解决方案1】:

According to Oracle documentation:

Oracle 不支持对列或属性的约束 type 是用户定义的对象、嵌套表、VARRAY、REF 或 LOB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多