标签: ddl

MySQL 列是否应该始终具有默认值?

在 MySQL 列上始终使用默认值是最佳做法吗?
这会提高性能吗?
我已将我的列设置为NOT NULL但未指定默认值。
这是不好的做法吗?

mysql ddl

5
推荐指数
2
解决办法
3215
查看次数

从 PostgreSQL 中的存储过程删除或创建数据库

我有一个看起来像这样的函数:

BEGIN
  DROP DATABASE IF EXISTS db_1;
END;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:无法从函数或多命令字符串执行 DROP DATABASE。

是否无法从 PostgreSQL 的存储过程中删除数据库?我正在使用 plpgsql。

postgresql ddl stored-procedures dblink plpgsql

5
推荐指数
1
解决办法
7446
查看次数

从 PostgreSQL 搜索中排除过时数据的最佳方法

我有一个包含以下列的表:

  • 一个名为的整数列 id
  • 一个名为的文本列 value
  • 一个名为的时间戳列 creation_date

目前,已经为idvalue列创建了索引。

我必须在此表中搜索给定值,并希望尽可能快地进行搜索。但我真的不需要查看超过一个月的记录。因此,理想情况下,我想将它们从索引中排除。

实现这一目标的最佳方法是什么:

  1. 执行表分区。仅在子表中搜索适当的月份。
  2. 创建仅包含最近记录的部分索引。每个月重新创建它。
  3. 还有什么?

(PS.:“最好的解决方案”是指最方便、快捷、易于维护的解决方案)

sql postgresql indexing ddl plpgsql

5
推荐指数
1
解决办法
960
查看次数

从 PostgreSQL 中的所有对象中删除 COMMENT ON

pg_dump 一样没有对对象的评论?, 有没有人知道一个命令可以一次快速删除COMMENT ON所有对象上的注释(创建于)?

现在,我求助于 bash 生成一个 SQL 脚本,该脚本会一个一个地取消每个表/视图/列上的注释,但速度很慢,尤其是 > 4000 列。
例子:

COMMENT ON COLUMN table1.column1 IS NULL;
COMMENT ON COLUMN table1.column2 IS NULL;
COMMENT ON COLUMN table1.column3 IS NULL;
...
Run Code Online (Sandbox Code Playgroud)

postgresql ddl

5
推荐指数
1
解决办法
3368
查看次数

可以使用Hibernate Schema生成在没有数据库连接的情况下生成DDL吗

我想使用 Hibernate 的模式生成来为我无法直接从我的 PC 访问的数据库生成 DDL,只需使用 hibernate 配置文件。如果可能,我想跳过本地 oracle 数据库的安装。hibernate 可以为适当方言、版本等的“理论”数据库生成 DDL,还是白日做梦?

有没有其他工具可以做到这一点?

java database oracle ddl hibernate

5
推荐指数
1
解决办法
2371
查看次数

将完整的 Oracle 11g 数据库模式从脚本转储到一组 SQL 创建语句

我需要将Oracle 数据库的完整模式(仅,无数据)转储到文本文件或一组文本文件,以便能够使用标准 VCS 工具(如系统地跟踪对数据库模式的修订。

使用我最喜欢的 RDBMS ,这是一项几乎微不足道的简单任务,使用pg_dump --schema-only.

然而,事实证明,使用 Oracle 11g 将 Oracle DB 模式转储到 SQL 文件是一项非常困难的任务。我有兴趣了解其他人已经找到的方法。

数据泵导出(否?)

不幸的是,我无法使用数据泵导出Oracle 10g 中引入工具,因为这些工具需要 DBA 级别的访问权限,而对于我的大多数客户的数据库,我无法轻松获得此级别的访问权限。

SQL 开发人员

我使用过 Oracle 的 SQL 开发人员 GUI,它主要通过“单独文件”设置完成我想要的操作:

  • 发出一个语法正确的 SQL 文件来创建每个数据库对象
  • 发出一个摘要 SQLs 文件,该文件以正确的顺序包含每个单独的对象文件

但是,它有几个主要问题:

  • 它只是一个 GUI;据我所知,无法从命令行编写此行为的脚本
  • 作为非特权用户运行,它只能为该用户拥有的对象发出 DDL(即使该用户已被授予查看其他用户对象的权限...... @#$​​(*&!! )
  • 非常慢,大约需要 20 分钟才能输出大约 1 MB 的 DDL

SQL 开发人员导出设置

expimp

Oracle的旧的exp命令行工具确实要求具有DBA权限。它可以导出数据库的完整 DDL(具有 DBA …

ddl metadata oracle11g

5
推荐指数
0
解决办法
1972
查看次数

如何使用 cloudformation 处理数据库 ddl/迁移?

我正在使用 Lambdas、SNS 和 MySql 构建一个项目。该项目是使用 CloudFormation 部署的。我最初使用 DynamoDB,但意识到我的数据实际上是关系数据,并且没有大量数据,因此使用 RDS 对我的情况会更好。我很难在网上找到有关如何在 CloudFormation 中处理数据库迁移的信息。

处理这些迁移的正确方法是什么?我找到了有关使用 lambda 进行迁移的信息。这是最好的方法吗?

ddl database-migration amazon-web-services aws-cloudformation aws-lambda

5
推荐指数
0
解决办法
202
查看次数

Flyway db | HIVE 的 Liquibase 等价物

我曾经使用 Flyway 管理我的数据库,但是我们迁移到 HDFS HIVE 并且我还没有看到类似的东西,目前正在寻找建议

ddl hive database-migration liquibase flyway

5
推荐指数
0
解决办法
526
查看次数

如何在postgres中向分区表添加新列

我使用 postgres 10 的声明式分区基于列值创建了一个具有多个分区的新主表。如何向表中添加新列?

postgresql ddl partitioning

5
推荐指数
1
解决办法
2378
查看次数

同一个表上的两个外键:如何在删除级联上实现?

我有一个有两列的表。它们中的每一个都是同一个第二个表的外键:

CREATE TABLE [dbo].[TBL_TOGETHER]
(
    [ID1] [int] NULL FOREIGN KEY REFERENCES [TBL_ANOTHER_TABLE](ID),
    [ID2] [int] NULL FOREIGN KEY REFERENCES [TBL_ANOTHER_TABLE](ID)
)
Run Code Online (Sandbox Code Playgroud)

但现在我不能再删除实体TBL_ANOTHER_TABLE了:

DELETE 语句与 REFERENCE 约束“FK__TBL_ASD__4DE98D56”冲突。

我的问题是:什么是实现最佳的解决方案ON DELETE CASCADETBL_TOGETHER

我尝试在外键上添加ON DELETE SET NULLON DELETE CASCADE,但由于循环或多个级联路径,它不起作用。

我试图在 上添加删除触发器TBL_ANOTEHR_TABLE,但它仍然与外键冲突:

ALTER TRIGGER REMOVE_FORENGKEY
ON TBL_ANOTHER_TABLE 
FOR DELETE
AS
BEGIN
    UPDATE TBL_TOGETHER
    SET TBL_TOGETHER.ID1 = NULL
    FROM TBL_TOGETHER
    JOIN deleted ON TBL_TOGETHER.ID1 = deleted.ID;

    UPDATE TBL_TOGETHER
    SET TBL_TOGETHER.ID2 = NULL
    FROM TBL_TOGETHER
    JOIN …
Run Code Online (Sandbox Code Playgroud)

sql-server ddl foreign-keys

5
推荐指数
1
解决办法
2128
查看次数