标签: ddl

将列的注释设置为Postgresql中另一列的注释

假设我在Postgresql中创建了一个表,并对列进行了注释:

create table t1 (
   c1 varchar(10)
);
comment on column t1.c1 is 'foo';
Run Code Online (Sandbox Code Playgroud)

一段时间后,我决定添加另一列:

alter table t1 add column c2 varchar(20);
Run Code Online (Sandbox Code Playgroud)

我想查找第一列的注释内容,并与新列关联:

select comment_text from (what?) where table_name = 't1' and column_name = 'c1'
Run Code Online (Sandbox Code Playgroud)

(什么?)将成为一个系统表,但在浏览了pgAdmin并在网上搜索后我还没有学到它的名字.

理想情况下,我希望能够:

comment on column t1.c1 is (select ...);
Run Code Online (Sandbox Code Playgroud)

但我有一种感觉,那就是伸展的东西.谢谢你的任何想法.

更新:基于我在这里收到的建议,我最终编写了一个程序来自动完成传输注释的任务,这是更改Postgresql列数据类型的更大过程的一部分.您可以在我的博客上阅读相关内容.

postgresql ddl comments

6
推荐指数
1
解决办法
8160
查看次数

在MySQL中,FKs的"CONSTRAINT"是做什么的?

我看过MySQL 5.1文档,但仍然无法弄清楚这一点 - 我注意到我输入MySQL的代码与系统输出代码之间存在差异.

代码示例01和02之间有什么区别,这意味着02 CONSTRAINT之前添加了FOREIGN KEY- 为什么,它有什么作用?

CODE_SAMPLE_01:

FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
Run Code Online (Sandbox Code Playgroud)

背景:

CREATE TABLE `TABLE_02` (
  `TABLE_02_sID_PK` int(8) NOT NULL,
  `TABLE_02_nID_FK__TABLE_01_sID_PK` int(8) NOT NULL,
  `TABLE_02_cID` int(8) NOT NULL,
  `TABLE_02_data01` varchar(128) default NULL,
  `TABLE_02_data02` varchar(128) NOT NULL,
  `create_timestamp` DATETIME DEFAULT NULL,
  `update_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`TABLE_02_sID_PK`),
  FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
  INDEX `TABLE_02_nID_FK__TABLE_01_sID_PK` (`TABLE_02_nID_FK__TABLE_01_sID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

CODE_SAMPLE_02:

CONSTRAINT `table_02_ibfk_1` FOREIGN KEY (`TABLE_02_nID_FK__TABLE_01_sID_PK`) REFERENCES `table_01` (`TABLE_01_sID_PK`)
Run Code Online (Sandbox Code Playgroud)

背景:

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

mysql ddl referential-integrity

6
推荐指数
1
解决办法
1064
查看次数

如何删除未使用的序列?

我们正在使用PostgreSQL.我的要求是从我的数据库中删除未使用的序列.例如,如果我通过我的应用程序创建任何表,将创建一个序列,但是为了删除表,我们也不会删除序列.如果要创建同一个表,则会创建另一个序列.

示例:table : file; 自动创建idcoumn 序列:file_id_seq

当我删除表file并再次使用相同的名称创建它时,正在创建一个新序列(即file_id_seq1).我通过这种方式在应用程序数据库中积累了大量未使用的序列.

如何删除这些未使用的序列?

postgresql ddl sequences

6
推荐指数
1
解决办法
9389
查看次数

LiquiBase是否为模式差异生成DDL?

是否有一种生成模式差异的DDL的方法,就像TOAD中的Synch功能一样?

不确定如何使用“ updateSQL”选项?我正在使用diff选项比较架构。

ddl liquibase

6
推荐指数
1
解决办法
1252
查看次数

如何创建具有唯一组合主键的 Postgres 表?

我在 Postgres 数据库中有两个名为players& 的表matches,如下所示:

CREATE TABLE players (
    name text NOT NULL,
    id serial PRIMARY KEY
);

CREATE TABLE matches (
    winner int REFERENCES players (id),
    loser int REFERENCES players (id),
    -- to prevent rematch btw players
    CONSTRAINT unique_matches
    PRIMARY KEY (winner, loser)
);
Run Code Online (Sandbox Code Playgroud)

如何确保仅将(winner, loser)或的唯一组合(loser, winner)用于matches主键,以便matches表不允许插入:

INSERT INTO matches VALUES (2, 1);
Run Code Online (Sandbox Code Playgroud)

如果它已经有一行包含VALUES (1, 2)像:

 winner | loser
--------+-------
      1 |     2
Run Code Online (Sandbox Code Playgroud)

目标是避免相同玩家之间的比赛进入。

sql postgresql ddl database-design unique-constraint

6
推荐指数
1
解决办法
1345
查看次数

从SQL Server数据库生成DDL脚本

如何使用SQL(select/stored procedure/etc)从SQL Server数据库生成所有表的DDL(带外键,索引等)脚本?除了数据,我需要一切.

不能使用Sql Server Management Studio,因为我想在一个将在linux上运行的node.js脚本中使用它!

sql sql-server ddl

6
推荐指数
2
解决办法
7585
查看次数

存储过程是 DDL 还是 DML?

DDL 和 DML 基本上是:

  • DDL = 数据定义语言
  • DML = 数据操作语言

我一直将存储过程归类为 DDL,因为它们使用结构化查询语言

但是最近我在争论存储过程应该是 DML 还是应该属于不同的分类,因为它们内部有 DDL 和 DML。

我在互联网上搜索,我没有找到任何可信赖的文档,其中存储过程被归类为 DDL,然后我不能再争论了......

因此,问题很简单:存储过程是 DDL 吗?或 DML?

已编辑 此问题已标记为已删除,我部分同意,但问题是其他问题只是解释了 DDL 与 DML,但有任何文档对存储过程应分类的位置进行分类。

ddl stored-procedures dml

6
推荐指数
0
解决办法
7397
查看次数

PostgreSQL 9.6。问题下降索引

在旧的 PostgreSQL 数据库中,我尝试删除发出命令的现有索引:

DROP INDEX testing.idx_testing_data_model_output_data_id;
Run Code Online (Sandbox Code Playgroud)

并查看错误:

ERROR:  index "<index name>" does not exist
Run Code Online (Sandbox Code Playgroud)

但是我可以使用以下\d <table name>命令查看索引:

DROP INDEX testing.idx_testing_data_model_output_data_id;
Run Code Online (Sandbox Code Playgroud)

好的,当我尝试创建索引时,我收到以下错误:

ERROR:  relation "<index name>" already exists
Run Code Online (Sandbox Code Playgroud)

似乎索引创建或索引删除没有成功完成。我该如何解决这个问题?

postgresql ddl

6
推荐指数
1
解决办法
3582
查看次数

使用 Spring Boot Data JPA 按需创建表

我正在尝试创建一个 Spring Boot 应用程序,我想在其中按需创建和使用数据库表,而无需为它们定义实体/存储库。

我有一个基本的 Business 实体和 BusinessType 实体来保留业务类型。我希望能够为具有自己的表的业务类型(比如 Coffeeshop)动态创建一个表(同时我可以在 BusinessType 表上保留表的名称并决定从那里查询哪个表)。

因此,如果不为 Coffeeshop 定义实体和/或创建 CrudRepository,我可以创建一个名为 Coffeeshop 的表,然后对其进行一些查询吗?

如果没有,我的选择是什么?在典型的 Spring Data JPA 应用程序中,您如何处理拥有基类型并允许系统具有更多具体类型(持久化并与基类型关联)的情况?

谢谢

java ddl generic-programming spring-data-jpa spring-boot

6
推荐指数
1
解决办法
708
查看次数

有没有办法通过红移来描述外部/频谱表?

在 AWS Athena 中,您可以编写

SHOW CREATE TABLE my_table_name;

并查看描述如何构建表架构的类似 SQL 的查询。 它适用于架构在 AWS Glue 中定义的表。 这对于在常规 RDBMS 中创建表、加载和探索数据视图非常有用。

以这种方式与 Athena 交互是手动的,我想自动化创建常规 RDBMS 表的过程,这些表与 Redshift Spectrum 中的表具有相同的架构。

我如何通过可以运行的查询来做到这一点psql?或者有另一种方法可以通过aws-cli?

ddl amazon-redshift amazon-redshift-spectrum

6
推荐指数
2
解决办法
4159
查看次数