Questions tagged «ddl»

数据定义语言;定义数据库结构,但不定义其内容。

2
在大表中填充新列的最佳方法?
我们在Postgres中有一个2.2 GB的表,其中有7,801,611行。我们正在向其中添加一个uuid / guid列,我想知道填充该列的最佳方法是什么(因为我们想向其添加NOT NULL约束)。 如果我正确理解Postgres,从技术上讲,更新就是删除和插入,因此这基本上是在重建整个2.2 GB表。另外,我们有一个正在运行的奴隶,所以我们不想让它落后。 有什么方法比编写随时间推移缓慢填充脚本的方法更好?



2
适用于MySQL的事务性DDL工作流程
我有点惊讶地发现,DDL语句(alter table,create index等)隐含在MySQL提交当前事务。来自MS SQL Server,能够在本地事务中进行数据库更改(然后被回滚)的能力是我工作流程的重要组成部分。对于连续集成,如果由于某种原因导致迁移失败,则使用回滚,以便至少我们不会使数据库处于半迁移状态。 人们在将MySQL与迁移和持续集成结合使用时如何解决这两个问题?

3
在数据库中强制执行“至少一个”或“完全一个”的约束
假设我们有用户,每个用户可以有多个电子邮件地址 CREATE TABLE emails ( user_id integer, email_address text, is_active boolean ) 一些样本行 user_id | email_address | is_active 1 | foo@bar.com | t 1 | baz@bar.com | f 1 | bar@foo.com | f 2 | ccc@ddd.com | t 我要强制执行一个约束,即每个用户都只有一个活动地址。如何在Postgres中做到这一点?我可以这样做: CREATE UNIQUE INDEX "user_email" ON emails(user_id) WHERE is_active=true; 这样做可以防止用户拥有多个活动地址,但我相信不能防止其所有地址都设置为false。 如果可能的话,我宁愿避免使用触发器或pl / …

4
为什么某些DBMS不允许某些DDL语句回滚?
最近,我发现MySQL 不支持DDL的回滚,例如“ alter table”。习惯于PostgreSQL,这让我感到奇怪,但是我的一个朋友告诉我,即使Oracle也不允许。有不支持它的技术原因吗?对于他们来说,这仅仅是一个“无趣的”功能吗? 编辑:刚刚发现此比较。它看起来像有很多的DBMS是做支持事务DDL。

1
如何在SQL Server DDL中使用事务?
我有一个登录表,所有插入都通过一个存储过程完成。 CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …

6
查询以比较MySQL中两个表的结构
为了自动执行一个MySQL数据库的备份过程,我想比较两个表的结构(当前版本与旧版本)。 您能想到一个可以比较两个表的查询吗? 这是您可以比较的一些示例表。 CREATE TABLE product_today ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_yesterday ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_2days_back ( pname VARCHAR(15), price int, PRIMARY KEY (pname) ); 前两个表具有相同的结构。最后一个是不同的。我只需要知道两个表是否具有不同的结构。我对它们之间的差异不感兴趣。


2
在功能/存储过程创建时禁用架构检查
我正在尝试自动化对SQL Server 2008 R2数据库执行更改的过程。我放置的过程会删除并重新创建我的存储过程和函数,以及运行脚本来更改表/列/数据。不幸的是,其中一个脚本需要首先放置其中一个功能。但是我不能先运行所有存储的proc / function更改,因为它首先依赖于从表/列/数据更改脚本中添加的列。 我想知道是否可以在不通过SQL Server验证函数/ SP定义中使用的列的情况下运行存储过程和函数?我尝试查找,但找不到条件或命令来启用此功能。



3
重设IDENTITY值
我有一个带有IDENTITY列的表。在开发时,我会不时删除这些行,然后再次添加它们。但是,当我再次添加IDENTITY值时,它们始终保持增加,并且不是从1开始。现在我的ID是从68-> 92,这使我的代码崩溃。 如何重置IDENTITY值?

2
为什么截断DDL?
我有一个面试问题,在面试过程中被问到。我回答了这个问题,但是面试官对我的回答并不那么确信。那么,有人请以我的理解纠正我吗? 问:为什么截断是DDL,而删除是DML?两者都做几乎相同的工作(删除行) Ans。当我们使用Truncate时,我们将取消分配数据分配的整个空间,而不保存到undo-table-space中。但是,在Delete的情况下,我们将所有数据放入undo表空间,然后删除所有数据。 请,如果有人知道上述最佳答案,请解释。
15 oracle  delete  ddl  truncate 

3
以自动化方式编写Oracle DDL脚本
Oracle SQL Developer能够通过Tools -> Database Export...此方式导出DDL,效果很好,但是需要手动干预。 我知道DBMS_METADATA.get_ddl(),但是发现导出并不完美。我遇到的问题是,导出的DBMS_METADATADDL如果不首先解决诸如关键字中间的中断以及更糟糕的问题之类的问题就无法使用。但是,如果任何人都知道DMBS_METADATA可以通过导出导出DDL的方法而无需手动修复,那也将是一个很好的解决方案。 基本上,我正在寻找一种自动/可脚本化的方式来导出DDL ,该方式与通过手动方式导出的方式相同。 我怎样才能做到这一点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.