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

How to check which columns are required for a database insert statement?

我正在尝试像任何旧的 Insert 语句一样插入到 table 中。这不是问题,但是 table 有几列,大约有 20 列。因此我想问一个简短的问题。您如何检查哪些列是必需的,哪些是系统自动生成的或默认为 NULL。通过知道我可以像下面这样插入一些大的 table:

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

然后我可以将其简化为所需的插入 + 关键参数的最低限度。

要检查 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 加 DESCRIBE 命令。它还将 运行 在大多数支持 sqlplus 命令的工具上,如 SQL Developer 等