ddl相关内容

在大型数据集上的Postgres中删除列

所以我有一个带有大数据集的表,该表有三列要删除。 问题是:Postgres将如何处理它? 它将遍历每个条目,还是只是更新映射信息而没有太多开销? 我可以只制作一个 ALTER TABLE 还是在这种特殊情况下使用交换表吗? 并且,如果有什么区别,那么三列的长度都是固定的(两个整数和一个数字)。 很抱歉,是否已经有人问过,但是Google找不到任何相关问题/文章... ..

使用带有[模板],[编码],[所有者]和.sql文件的批处理文件创建Postgres数据库

我想使用批处理文件创建一个Postgres数据库。现在,正常的操作方法如下: “ C:\Program Files\PostgreSQL\9.0\bin\createdb.exe” -U Myadmin MydatAbseName 上面的脚本创建具有默认数据库参数的数据库。但是,我想使用以下参数创建数据库: WITH OWNER = Myadmin TEMPLATE = t ..
发布时间:2020-05-29 22:18:20 其他开发

创建或替换触发器postgres

我想“创建或替换” postgres表的触发器。但是,没有这样的sql表达式。 我看到我可以执行“ 如果存在则触发触发器”首先( http://www.postgresql.org/docs/9.5/static /sql-droptrigger.html )。 我的问题是: 是否有比( DROP + CREATE 触发器) $ b $更推荐/更好的选择b 有没有没有这样的“创建 ..
发布时间:2020-05-29 22:11:38 其他开发

将列数据类型从数组更改为整数

我需要将列的数据类型从_float8更改为int4 ALTER TABLE“ table” ALTER COLUMN“ col “ SET DATA TYPE int4; 列“ col”的结果不能自动转换为整数 ALTER TABLE“ table” ALTER COLUMN“ col”设置数据类型int4使用(col :: integer) ; ..
发布时间:2020-05-29 21:51:39 其他开发

事务内部对PostgreSQL模式更改的限制?

我的数据库背景是Oracle,所以我惊讶地发现Postgres在事务中包含架构更改-如果您开始进行事务创建,创建表然后进行回滚,则该表将消失。它也适用于添加和删除列。显然,这非常好。 我们将对部署依赖此功能的架构增量的方式进行一些更改。在此之前,我想了解交易担保的范围,但是我无法在文档中找到任何相关信息。我认为我使用的搜索字词不正确-我的搜索只是转到包含“交易”,“创建”和“表格”一词的大型 ..
发布时间:2020-05-29 20:56:35 其他开发

如果postgreSQL中不存在,则创建唯一索引

我想在PostgreSQL中做类似的事情 在不存在 有什么想法吗? 解决方案 您可以检查此语句是否存在具有给定名称的索引。 如果索引名称为 some_table_some_field_idx SELECT count(*)> 0 来自pg_class c c.relname =‘some_table_some_field_idx’ AN ..
发布时间:2020-05-29 20:51:14 其他开发

如何删除未使用的序列?

我们正在使用PostgreSQL。我的要求是从数据库中删除未使用的序列。 例如,如果我通过应用程序创建任何表,将创建一个序列,但是对于删除表,我们也不会删除该序列。如果要创建相同的表,则会创建另一个序列。 示例:表: file ;自动为 id 列创建的序列: file_id_seq 何时我删除表 file 并再次使用相同的名称创建表,正在创建一个新序列(即 file_id_seq1 ..
发布时间:2020-05-29 20:32:47 其他开发

使用SQL查询在Postgresql中获取函数,序列,类型等的定义

我需要为PostgreSQL数据库对象创建脚本。 我无权访问pg_dump。因此,我必须使用SQL查询来获取所有信息。我该怎么做? 解决方案 要获取函数的定义,请使用 pg_get_functiondef(): 从pg_proc 中选择pg_get_functiondef(oid) 其中proname ='foo '; 有类似的函数可检索索引,视图,规则等的 ..
发布时间:2020-05-29 20:31:32 其他开发

仅在存在时重命名列

PostgreSQL不允许 ALTER TABLE t如果存在c1到c2 ...或类似的东西。但是,能够编写修改DB结构的脚本非常方便,该脚本可以再次运行而无需先检查它是否已经运行。 如何编写PostgreSQL的功能可以做到这一点? 解决方案 HI尝试此解决方案。 DO $$ 开始 如果存在(选择* 从information_sche ..
发布时间:2020-05-29 20:14:26 其他开发

向数据库上的用户授予所有权限

我想授予用户对数据库的所有权限,而无需使其成为管理员。 之所以要这样做,是因为目前DEV和PROD是同一集群上的不同DB,所以我不希望用户能够更改生产对象,但用户必须能够更改对象 我尝试过: 授予数据库MY_DB上的ALL分组MY_GROUP; 但似乎没有任何许可。 然后我尝试: 授予模式MY_SCHEMA的所有特权以将MY_GROUP分组; ..
发布时间:2020-05-29 20:03:22 其他开发

在Postgresql上以编程方式生成DDL

如何在Postgresql上以编程方式生成表的DDL?是否有系统查询或命令来执行此操作?谷歌搜索问题不返回任何指针。 解决方案 答案是检查pg_dump的源代码并遵循其生成的开关。 DDL。在代码中的某个地方,有许多查询用于检索用于生成DDL的元数据。 ..
发布时间:2020-05-29 19:55:55 其他开发

使用串行主键列安全地重命名表

我知道使用SERIAL主键的PostgreSQL表最终会由PostgreSQL创建一个隐式索引,序列和约束.问题是在重命名表时如何重命名这些隐式对象.下面是我尝试用特定的问题来解决这个问题. 给出一个表格,例如: CREATE TABLE foo ( pkey SERIAL PRIMARY KEY, value INTEGER ); Postgres输出: 注 ..
发布时间:2020-05-29 19:43:46 其他开发