SQL for Oracle检查是否存在约束

Rya*_*yer 12 sql sql-server oracle

在SQL Server中,我可以使用下面的SQL来检查是否存在约束,以及它是否为主键,触发器等.

SELECT * 
    FROM dbo.sysobjects 
    WHERE id = OBJECT_ID(N'[SCHEMA].[TABLENAME]') 
        AND OBJECTPROPERTY(id, N'IsPrimaryKey') = 1
Run Code Online (Sandbox Code Playgroud)

什么是Oracle等价物,因为我的查询使用SQL Server特定的表来查找答案.

Sat*_*hat 30

SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'CONSTR_NAME';
Run Code Online (Sandbox Code Playgroud)

THE CONSTRAINT_TYPE会告诉你它是什么类型的约束

  • R - 参考密钥(外键)
  • U - 唯一键
  • P - 主键
  • C - 检查约束

要确定对象是否是触发器,您可以查询USER_OBJECTS.OBJECT_TYPE会告诉你对象是触发器,视图,程序等.