当前位置: 首页 > 知识库问答 >
问题:

在Postgres 9.1中确定表的OID?

毋琪
2023-03-14

有人知道如何在Postgres 9.1中找到表的OID吗?我正在编写一个更新脚本,它需要在试图创建列之前测试表中是否存在列。这是为了防止在第一个脚本运行后出错。

共有1个答案

陶锋
2023-03-14

要获得表OID,转换为对象标识符类型regclass(当连接到同一个数据库时):

SELECT 'mytbl'::regclass::oid;

这将沿着search_path查找具有给定名称的第一个表(或视图等),如果没有找到,则引发异常。

schema-限定表名以移除对搜索路径的依赖关系:

SELECT 'myschema.mytbl'::regclass::oid;
    null
SELECT TRUE AS col_exists
FROM   pg_attribute 
WHERE  attrelid = 'myschema.mytbl'::regclass
AND    attname  = 'mycol'
AND    NOT attisdropped  -- no dropped (dead) columns
-- AND attnum > 0        -- no system columns (you may or may not want this)
 类似资料:
  • 问题内容: PostgreSQL提供了格式数据类型来存储日期。这些日期的问题是,据我所知,它们无法解释不确定性。 有时人们不知道某事的完整日期,但知道它发生在1995年1月或“ 1999或2000”中()。可能有以下几个原因: 人们不记得确切的日期; 确切的日期从根本上是未知的:例如,某人在某天最后一次被人看到,几天后被发现死亡。或者 我们处理未来的事件,因此仍然有可能出现问题。 我想知道是否存在

  • 问题内容: 我知道这与这个问题相似,但是我在C#中将SQL Server CE 3.5与WinForms项目一起使用。如何确定表是否存在?我知道虽然不支持该关键字。CE中是否存在information_schema,可以在其中查询它?谢谢。 问题答案: 是的,它确实存在:

  • 问题内容: 我希望能够以某种方式在SQL Server 2005中执行的操作是以表名作为输入来确定组成主键的所有字段。似乎没有这个领域。关于在哪里看有什么想法? 问题答案: 我在编写的代码生成器中使用它来获取主键:

  • 问题内容: 我正在用PHP生成这样的SQL查询: 由于此查询的几乎每个部分都是动态的,因此我需要一种动态确定表的主键的方法,这样我就可以进行如下查询: 表的主键是否有MySQL关键字,或者有获取该关键字的方法? 我以前使用过information_schema数据库来查找这样的信息,但是如果我不必求助于此,那将是很好的。 问题答案: 您想要其中Key_name = PRIMARY的行 http:/

  • 问题内容: 我想使用TSQL确定表的主键(存储过程或系统表都可以)。SQL Server(2005或2008)中是否存在这种机制? 问题答案: 这应该使您开始:

  • 问题内容: 假设我想用python编写一个非常简单的程序来指示长按一个键。所以如果我键入并按住“j”键几分钟,我 我想写一个程序,能够显示像’的关键信息按下“j”键1.1秒。 据我所知,实现这一点的方法应该是通过检测为KEYDOWN事件和KEYUP事件添加时间戳,并使 时间戳的减法。所以检测KEYDOWN和keypup就足够了事件。有各种各样的问题和答案,所以关于检测一个单次按键或关于检测单字符输