如何检查数据库插入语句需要哪些列?

时间:2020-04-20 19:26:28

标签: sql oracle constraints metadata

我试图像任何旧的Insert语句一样插入表中。这不是问题,但是表中有大约20列的列。因此,我想问一个简单的问题。如何检查哪些列是必需的,哪些列是系统自动生成的,或者默认为NULL。知道我可以像下面那样插入一些大表:

INSERT INTO TABLE (A1,B2,C3,D4... to Z1000) 
VALUES (1,2,3,4,... to x);

然后我可以将其简化为所需的insert +关键参数的最低要求。

1 个答案:

答案 0 :(得分:0)

要检查NOT NULL约束,可以向ALL_TAB_COLS查询NULLABLE

例如,下面的查询将显示所有可为空的列。同样,您可以过滤为NULLABLE = 'N'以获取不为空的列。

SELECT column_name
  FROM all_tab_cols
 WHERE owner = 'HR'
   AND table_name = 'EMPLOYEES'
   AND NULLABLE ='Y';

COLUMN_NAME    
---------------
FIRST_NAME
PHONE_NUMBER
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID

6 rows selected.

对于自动生成的IDENTITY列,您可以查询ALL_TAB_IDENTITY_COLS

SELECT column_name,
       generation_type,
       identity_options
FROM   all_tab_identity_cols
WHERE  owner = 'OWNER'
AND table_name = 'TABLE_NAME';

要快速引用对象描述,还可以使用SQL Plus DESCRIBE命令。它还将在支持sqlplus命令的大多数工具(例如SQL Developer等)上运行。