Oracle SQL。有没有办法约束类型?

Oracle SQL。有没有办法约束类型?,sql,oracle,Sql,Oracle,(我正在学习Oracle SQL) 我想声明一个类型,将其可能的值限制为只有一些选择。这方面的最佳做法是什么 我找了很多东西,什么也没找到。这是任何类型代码的基本函数,因此它应该已经是一个已解决的问题。也许有一个共同的模式来解决它 Oracle SQL似乎不允许对类型进行约束(也没有域) 我不想在使用该类型的每个表上复制约束代码,因为这会为每个表复制一次代码,而这在任何语言上都是糟糕的编码实践 请添加一个示例。如果您正在考虑限制某些表中可以进入字段的值,您可以为这些值创建一个参考表。然后,可以包

(我正在学习Oracle SQL)

我想声明一个类型,将其可能的值限制为只有一些选择。这方面的最佳做法是什么

我找了很多东西,什么也没找到。这是任何类型代码的基本函数,因此它应该已经是一个已解决的问题。也许有一个共同的模式来解决它

Oracle SQL似乎不允许对类型进行约束(也没有域)

我不想在使用该类型的每个表上复制约束代码,因为这会为每个表复制一次代码,而这在任何语言上都是糟糕的编码实践


请添加一个示例。

如果您正在考虑限制某些表中可以进入字段的值,您可以为这些值创建一个参考表。然后,可以包含这些值的表可以有一个指向引用的外键,将它们限制为仅包含引用表中的值

例如:

表地面类型:

+---+--------+
|ID |Type    |
+---+--------+
|1  |Grass   |
|2  |Tarmac  |
|3  |Concrete|
乒乓球场

+--------+------+----------+
|CourtID |Adress|GroundType|
+--------+------+----------+
| 1      |locat | 2        |
| 2      |locat | 3        |
| 3      |locat | 1        |
桌上篮球场

+--------+------+----------+
|CourtID |Adress|GroundType|
+--------+------+----------+
| 1      |locat | 3        |
| 2      |locat | 2        |
| 3      |locat | 2        |

你想用这个解决什么问题?@Michael McGriff我想避免对相同类型的数据重复约束代码。在大多数编程语言中,我通过定义类型并在任何地方使用该类型来避免重复。Oracle SQL不支持定义带有关联代码的类型。我唯一能找到的是在作用域引用下使用对对象表的引用,基本上是建议的,但在类型级别上。@Michael McGriff我一直在阅读有关作用域引用的链接和其他文档,我仍然不明白作用域ref是否会将指针限制在指向表上的现有元素,或者新指针是否会在指向表中创建新行(该表对其行进行了约束)。换句话说,我不明白指针表是作为合法值的枚举还是作为具有无限行数的实例的存储。我的印象是,如果它没有在对象表上列出某个值,则不允许在引用对象表的任何地方使用它。基本上与外键完全相同。您的意思是相同类型的所有数据元素都应该存储在一个表中?我是初学者。例如,我很担心,当代码删除指向“桌上篮球场”的指针时,“桌上篮球场”内的指向项会发生什么情况?它是作为内存泄漏留下的吗?应该手动删除吗?我不明白,当新行添加到另一个表中时,另一个表上的新行(指针)是否仅限于“table Basketball court”上的行,或者是否创建了新行并存储在“table Basketball court”中。在第一种情况下,它将“作为枚举”,在第二种情况下“作为类型定义”。或者它可以双向工作?