标签: ddl

将自动增量列添加到按日期排序的现有表中

我在数据库中有一个名为“tickets”的现有表,其中包含以下列:

id (string, Primary Key, contains UUID like e6c49164-545a-43a1-845f-73c5163962f2) 
date   (biginteger, stores epoch)
status (string)
Run Code Online (Sandbox Code Playgroud)

我需要添加新的自动增量列ticket_id但要生成的值应该根据“日期”列值。

我试过这个:

ALTER TABLE "tickets" ADD COLUMN "ticket_id" SERIAL;
Run Code Online (Sandbox Code Playgroud)

问题是,它以某种奇怪的顺序生成“ticket_id”值,看起来它基于“id”列,它是表的主键。

是否可以生成根据“日期”排序的序列值?这很重要,因为“ticket_id”需要根据票的生成顺序显示。

postgresql ddl sql-update database-sequence

7
推荐指数
1
解决办法
4396
查看次数

如何获取 PostgreSQL 中聚合的定义/源代码?

我发现这个相关答案很有用:

CREATE AGGREGATE但是如何在没有 GUI 客户端(例如使用 psql 命令行)的情况下获取语句?

sql postgresql ddl aggregate-functions psql

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

如何在sqlplus中撤销用户的所有权限?

如何在 SQLPlus 中撤销用户的所有权限?我已登录,sysdba并且我想撤销普通用户的所有权限。

我用谷歌搜索了这个查询

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
Run Code Online (Sandbox Code Playgroud)

但我不明白我应该为用户提供什么,等等。

oracle privileges ddl sqlplus sql-revoke

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

将列定义从一个表复制到另一个表?

我想将一列(定义,而不是数据)从一个表复制到另一个表。如果目标表中不存在该列,则添加该列,或者更好的是,如果存在,则相应地修改它。

试图谷歌,但一切似乎都是关于复制数据而不是定义,或者关于使用CREATE TABLE ... LIKE ....

到目前为止我能找到的最接近的是:

CREATE TABLE table2 AS 
SELECT field4, field7                -- only the columns you want
FROM table 
WHERE FALSE;                 -- and no data
Run Code Online (Sandbox Code Playgroud)

但我需要将列复制到现有表中。所以我试过:

ALTER TABLE table2 AS 
SELECT field4, field7                -- only the columns you want
FROM table 
WHERE FALSE;                 -- and no data
Run Code Online (Sandbox Code Playgroud)

但显然它拒绝工作。

有这样的吗?

ALTER TABLE table1 ADD COLUMN column2 LIKE table2.column5
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在 MySQL 中实现这一点吗?

mysql ddl

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

如何创建具有唯一组合主键的 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
查看次数

存储过程是 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
查看次数

将 psql 中的列 varchar 更改为 json

您好,我正在尝试将表中的列从 varchar 转换为 json,并且该表已经有一些字符串数据。我尝试使用以下命令执行此操作。

Database=# alter table table_name alter column message type json using
message::json;
Run Code Online (Sandbox Code Playgroud)

但该命令失败并出现以下错误。

ERROR:  invalid input syntax for type json
DETAIL:  Token "This" is invalid.
CONTEXT:  JSON data, line 1: This...
Run Code Online (Sandbox Code Playgroud)

注意:消息栏有一组带有空格的单词,如下所示。

"This is a message"
Run Code Online (Sandbox Code Playgroud)

我不确定出了什么问题。提前致谢..

postgresql ddl json sqldatatypes

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