AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[ddl](dba)

Martin Hope
Jakub Holý
Asked: 2021-10-30 00:19:06 +0800 CST

PostgeSQL:如果不存在则创建角色/用户?

  • 1

是否有某种方法可以通过 SQL 在 PostgreSQL 中创建用户/角色/组,但前提是它尚不存在?到目前为止,我发现的唯一解决方案是创建自定义存储过程,因为它支持条件。有没有我忽略的更简单的解决方案?谢谢!

postgresql ddl
  • 1 个回答
  • 3352 Views
Martin Hope
Sebastiaan van den Broek
Asked: 2021-06-03 23:56:27 +0800 CST

我可以让 postgres 的 pg_dump 压缩 create table 部分中的 alter table 语句吗?

  • 1

如果我使用 pg_dump 从我的数据库中获取模式,我会得到单独的部分,例如键、约束等,如下所示:

CREATE TABLE public.account (
    id uuid NOT NULL,
    db_version bigint,
    email_address character varying(255) NOT NULL,
    full_name character varying(255) NOT NULL
);

....and then later....

ALTER TABLE ONLY public.account
    ADD CONSTRAINT account_pkey PRIMARY KEY (id);

这使得整个转储变得非常冗长。如何压缩转储以便将所有内容都放在创建表部分?

postgresql ddl
  • 1 个回答
  • 400 Views
Martin Hope
Avocado
Asked: 2021-04-06 10:56:19 +0800 CST

检索特定于列的检查约束的名称

  • 2

PostgreSQL 12

当我重命名表中的列时,我也想动态重命名匹配的检查约束。

我有一个假设的表格:

CREATE TABLE hypothetical_table (
  id SERIAL PRIMARY KEY,
  some_col text,
  some_col_also text
);

有以下限制:

ALTER TABLE hypothetical_table ADD CONSTRAINT some_col_length_>_5 CHECK(char_length(some_col) > 5);

ALTER TABLE hypothetical_table ADD CONSTRAINT some_col_also_length_>_5 CHECK(char_length(some_col_also) > 5);

我不知道列可能有什么限制。我知道它们以列名为前缀。但是,就像some_col上面的约束一样,该前缀可能与另一列的 ( some_col_also) 匹配。

当我重命名此表中的列时,我也想重命名约束,以匹配新的列名。

那么,如果我要重命名some_col,如何选择与该列关联的所有检查约束?

我尝试pg_catalog.pg_constraint使用pg_catalog.pg_attributeON con.conkey = pga.attnum(conkey未嵌套)加入,但这会返回许多与该列无关的约束。

postgresql ddl
  • 1 个回答
  • 353 Views
Martin Hope
T.S.
Asked: 2021-02-06 17:39:58 +0800 CST

不能依赖 INFORMATION_SCHEMA.view_definition?

  • 0

我已经构建了比较数据库中的对象并生成脚本以复制不同数据库中的对象的应用程序。当我使用它来检索视图代码时我注意到了什么

select * from INFORMATION_SCHEMA.VIEWS where TABLE_NAME = 'V_SC_ALL_CUSTOMER_DOCUMENTS'

是VIEW_DEFINITION缩短视图 DDL。然后我学会了使用sys.sql_modules来获得完整的定义。

我跑了这些

sp_help 'INFORMATION_SCHEMA.VIEWS'
sp_help 'sys.sql_modules'

并发现INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION nvarcharsize = 8000 和sys.sql_modules.DEFINITION nvarcharsize = -1。我相信nvarchar(max)。

VIEW_DEFINITION如果你不能依赖它,那又有什么意义呢?还有其他类型的对象我应该检索sql_modules而不是从它们相应的表中检索,如过程、触发器等?

sql-server ddl
  • 2 个回答
  • 160 Views
Martin Hope
Carl Patenaude Poulin
Asked: 2020-10-28 07:01:51 +0800 CST

在不影响用户的情况下重命名列

  • 0

您可以使用以下语句重命名列:

ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;

但是,这会使旧列立即失效。任何使用旧列名的使用站点都会开始出现问题。

有没有办法将表置于临时状态,其中旧名称和新名称都可用于引用列,以便我可以移动我的客户,然后停用旧名称?

postgresql ddl
  • 1 个回答
  • 56 Views
Martin Hope
Gandolf989
Asked: 2020-10-01 06:22:09 +0800 CST

从 Mongo 数据库中获取 DDL

  • 0

我对 MongoDB 做的不多。但是在尝试理解我们在 MongoDB 中拥有的数据时,从查看数据库中的 DDL 开始是有意义的。将 DDL 从 MongoDB 数据库中拉出的最简单方法是什么。我可以直接登录 Linux 服务器并运行命令,而且我还有 Robo 3T 客户端。

谢谢

mongodb ddl
  • 2 个回答
  • 1724 Views
Martin Hope
Hadi
Asked: 2019-07-11 11:20:00 +0800 CST

在 postgresql 中准备语句计划失效

  • 0

Postgresql 缓存准备好的语句及其后续执行的计划。见: https ://www.postgresql.org/docs/current/sql-prepare.html https://stackoverflow.com/questions/7142335/how-does-postgresql-cache-statements-and-data

我的问题是破坏/重写/清除 postgres 缓存的内容是什么?自然,任何 DDL 语句(例如 drop、alter 等)都可以。但是还有其他事情吗?

postgresql ddl
  • 1 个回答
  • 549 Views
Martin Hope
Adel SaadEddin
Asked: 2018-12-29 15:17:52 +0800 CST

如何在sql中找到分组依据的平均值的最大值

  • 1

我有三个表 Faculty {id, name}, Student {id, faculty_id, name}, Course_student {id, student_id, mark}

我会选择每个学院的尖子生

我厌倦了以多种方式执行此操作,但我不能

SELECT Faculty.name, Student.name, MAX(AVG(mark)) 
FROM (Faculty inner join Student On Faculty.id = Student.faculty_id) inner join Course_student On Student.id = Course_student.student_id
group by Faculty.name
select ddl
  • 1 个回答
  • 77 Views
Martin Hope
AMG
Asked: 2018-07-17 13:30:15 +0800 CST

表检查约束以验证特定值的唯一性

  • 0

Oracle 10g:假设下表(T_REGISTER):

ID_PROCESS   PERIOD    CUSTOMER    STATUS
===========================================
0001234      201801    12300344    INVALID
0001236      201801    12300344    INVALID
0001246      201801    12300344    UNPAID
0001249      201801    12300344    UNPAID
0001278      201801    12300344    COMPLETED

ID_PROCESS 是 PK。但我还需要 (PERIOD + CUSTOMER + STATUS) 在 STATUS 完成时是唯一的。

换句话说,对于一个 UNIQUE (PERIOD + CUSTOMER),我不在乎有几个 INVALID 或 UNPAID 行,但我只能承认一个唯一的 (PERIOD;CUSTOMER; STATUS="COMPLETED")

在寻求触发解决方案之前使用 CHECK CONSTRAINT 的任何优雅解决方案?提前致谢...

oracle ddl
  • 1 个回答
  • 711 Views
Martin Hope
Karl.S
Asked: 2018-05-31 16:53:49 +0800 CST

如何对表的有限历史建模

  • 1

语境

我有 3 个实体(用户、商店和汽车),一辆汽车一次只能有一个regNum、一个shopId和一个ownerId,这就是它们嵌入汽车表的原因。

create table "user"
(
  id   bigint primary key,
  name varchar(40) not null
);

create table "shop"
(
  id   bigint primary key,
  name varchar(40) not null
);

create table "car"
(
  id      bigint primary key,
  ownerId bigint,
  regNum  varchar(8),
  shopId  bigint,
  price   numeric(10,2),
  constraint foreign key(ownerId) references "user",
  constraint foreign key(shopId) references "shop"
);

问题

我想保留汽车的历史regNum,ownerId以及shopId最终其他未来领域(但不一定是所有领域)。什么是最好的解决方案(可扩展性/性能/易用性)?我找到了下面的那些,也许有人遇到过同样的问题,也许还有另一种解决方案?

解决方案 1

我添加了与要“观看”的字段一样多的历史表。这似乎是一种标准化的工作方式,但它看起来维护起来也很复杂,它也更贪婪,好像我一次修改所有字段(regNum、shopId 和 ownerId),我需要插入 3 条记录(每个记录一个历史等等,如果我稍后看其他领域)。

create table "carOwner"
(
  id        bigint primary key,
  carId     bigint not null,
  changedAt timestamp not null,
  ownerId   bigint,
  constraint foreign key(carId) references "car",
  constraint foreign key(ownerId) references "user"
);

create table "carShop"
(
  id        bigint primary key,
  carId     bigint not null,
  changedAt timestamp not null,
  shopId    bigint,
  constraint foreign key(carId) references "car",
  constraint foreign key(shopId) references "shop"
);

create table "carRegNum"
(
  id        bigint primary key,
  carId     bigint not null,
  changedAt timestamp not null,
  regNum    varchar(8),
  constraint foreign key(carId) references "car"
);

方案二

我将历史记录保存在一个表中,它是car表在给定时间的简单快照。它似乎更容易维护,但它并不精确,因为如果我没有以前的记录,我无法直接看到发生了什么变化。

create table "carHistory"
(
  id        bigint primary key,
  carId     bigint not null,
  changedAt timestamp not null,
  ownerId   bigint,
  regNum    varchar(8),
  shopId    bigint,
  constraint foreign key(carId) references "car",
  constraint foreign key(shopId) references "shop",
  constraint foreign key(ownerId) references "user"
);
database-design ddl
  • 4 个回答
  • 111 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve