【发布时间】:2012-10-11 12:58:07
【问题描述】:
我已获得访问 Oracle 数据库的权限,我正在尝试确定表中的给定列是否可以为空。我可以连接到 Oracle DB 并获取连接元数据。
【问题讨论】:
我已获得访问 Oracle 数据库的权限,我正在尝试确定表中的给定列是否可以为空。我可以连接到 Oracle DB 并获取连接元数据。
【问题讨论】:
普通 SQL 解决方案(适用于各种数据库访问层)
获取特定列:
SELECT NULLABLE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>'
AND COLUMN_NAME = '<YOUR_COLUMN_NAME>';
获取表中的所有列:
SELECT COLUMN_NAME, NULLABLE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' ;
如果表在另一个模式中,你应该这样使用它:
SELECT COLUMN_NAME, NULLABLE
FROM ALL_TAB_COLUMNS
WHERE OWNER = '<OWNER_SCHEMA_NAME>'
AND TABLE_NAME = '<YOUR_TABLE_NAME>';
(基于OTN discussion Forum上的帖子)
JDBC具体解决方案:
你可以使用DatabaseMetadata对象:
getColumns(null,null,'yourtablename','%',null)获取表格数据
(来自Dr. Herong Yang: Listing All Columns - getColumns())
或者您可以使用虚拟查询:Java2S: Is column nullable from ResultSetMetadata 我不喜欢这个,这不是一个干净的解决方案......
【讨论】: