alter-table相关内容

不用锁定表就可以改变表吗?

在MySQL中执行ALTER TABLE语句时,整个表在语句期间被锁定(允许并发读取,但禁止并发写入).如果这是一个大表,则可能会在很长一段时间内阻止INSERT或UPDATE语句.有没有一种方法可以进行“热更改",例如以一种使表在整个过程中仍可更新的方式添加列? 大多数情况下,我对MySQL解决方案感兴趣,但如果MySQL无法做到,我也会对其他RDBMS感兴趣. 为澄清起见,我的目的 ..
发布时间:2020-05-14 20:24:47 数据库

MySQL:ALTER IGNORE TABLE ADD UNIQUE,什么会被截断?

我有一个包含4列的表格:ID,类型,所有者,描述. ID是AUTO_INCREMENT主键,现在我要: ALTER IGNORE TABLE `my_table` ADD UNIQUE (`type`, `owner`); 我当然很少有类型='Apple'和owner ='Apple CO'的记录.因此,我的问题是,哪条记录将是保留在该ALTER TABLE之后的特殊记录,ID最 ..
发布时间:2020-05-14 20:19:35 数据库

修改列与更改列

我知道,我们不能使用modify column syntax重命名列,但是可以使用change column syntax. 我的问题是:modify syntax的主要用途是什么? 例如, alter table tablename change col1 col1 int(10) not null 代替 alter table tablename modify co ..
发布时间:2020-05-14 20:19:17 数据库

更改MySQL表以在列上添加注释

我一直在查看 ALTER TABLE的MySQL文档,并且似乎没有提供向列添加或修改注释的方法.我该怎么办? -- for table ALTER TABLE myTable COMMENT 'Hello World' -- for columns -- ??? 解决方案 尝试: ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) CO ..
发布时间:2020-05-14 20:17:21 数据库

MySQL:如果列不存在,则使用ALTER TABLE

我有此代码: ALTER TABLE `settings` ADD COLUMN `multi_user` TINYINT(1) NOT NULL DEFAULT 1 而且我只想在此列不存在的情况下更改此表. 我正在尝试许多不同的方法,但是没有任何效果: ALTER TABLE `settings` ADD COLUMN IF NOT EXISTS `multi_user` ..
发布时间:2020-05-14 20:03:56 数据库

ALTER TABLE添加一个复合主键

我有一个名为provider的表.我有三列分别称为person,place,thing.可以有重复的人,重复的地方和重复的事物,但是永远不可能有重复的人与事物的组合. 我如何通过以下三列在ALTER TABLE中为该表添加一个复合主键? 解决方案 ALTER TABLE provider ADD PRIMARY KEY(person,place,thing); 如果主键已经存在, ..
发布时间:2020-05-14 20:02:54 数据库

将MySQL列更改为AUTO_INCREMENT

我正在尝试修改一个表,使事实之后的主键列为AUTO_INCREMENT.我尝试了以下SQL,但收到了语法错误通知. ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT 我做错了还是不可能? +--------------------+ | VERSION() | +-------------- ..
发布时间:2020-05-14 19:45:31 数据库

pyodbc-使用默认值将列添加到MS Access

我正在尝试使用pyodbc和Python 3.5向MS Access数据库表中添加一列. 使用表达式 self.cursor.execute("ALTER TABLE data ADD COLUMN testColumn TEXT(10)") 可以正常工作,但是当我尝试添加默认值(DEFAULT"no")时,它将引发语法错误.我尝试了多种组合,但是没有运气. 非常感谢您的帮助 ..
发布时间:2020-05-12 20:55:04 其他开发

ALTER TABLE:使用默认值和复选框添加一个新的布尔列

将Boolean数据类型列添加到表中的正确Access DDL查询是什么? 到目前为止,我已经看到了如下示例... ALTER TABLE MyTable ADD MyNewColumName BIT 但是自那以后,它们似乎并不是100%正确的 Access不会将复选框控件应用于新添加的列,并且 该列的允许值似乎是0和-1 解决方案 DAO示例. ''Requ ..
发布时间:2020-05-12 20:48:57 其他开发

mysql:循环遍历表和alter table添加索引

我有〜1000个以相同前缀开头的表: table_prefix_ {SOME_ID} (我可以从另一个表中获取ID) 在mysql中循环遍历 所有 表的快速方法是什么: ALTER TABLE`table_prefix_ {some_id}`ADD INDEX` fields`(`field`) 解决方案 忘记循环。只需这样做: 选择concat('alter ..
发布时间:2018-11-15 15:31:58 数据库

MySQL从表中删除所有索引

我有一个MySQL数据库,它运行了一段时间,并对其进行了很多更改。最近我查看了它,我注意到在某些情况下我在同一个字段上加倍了索引。有些索引丢失了,一般来说所有索引都有很多混乱。 我想从表中删除所有索引。稍后我有一个准备好的脚本,它将运行 ALTER TABLE 并添加相关索引。 有没有办法从表中删除所有索引? 解决方案 如果你有phpmyadmin或任何类似工具,你可以很容易地 ..
发布时间:2018-08-02 13:34:14 数据库

在没有表锁定的情况下在巨大的MySQL生产表上创建索引

我需要在~5M行MySQL表上创建索引。这是一个生产表,如果我运行CREATE INDEX语句,我担心一切都完整... 有没有办法创建该索引而不阻塞插入并选择? 只是想知道我没有停下来,创建索引并重启我的系统! 解决方案 [2017]更新:MySQL 5.6支持在线索引更新 https://dev.mysql.com/doc/refman/5.6/en/innodb-cr ..
发布时间:2018-08-02 12:59:37 数据库

在执行SQLite alter table技巧时更新外键引用

在SQLite FAQ [1]中提到SQLite没有完整的ALTER TABLE支持。在上一个关于StackOverflow [2]的问题中提到了一个技巧来完成表格修改。 我想知道的是如何保持FOREIGN KEY引用到后来被删除的重命名表。我应该对每一个与我正在修改的实际表具有外键关系的表执行相同的技巧吗? $ b [1] http://www.sqlite.org/lang_alter ..
发布时间:2018-01-27 15:15:06 其他开发

使用Alter Table与现有的MYSQL数据库添加外键问题 - 无法添加!帮帮我!

我有一个生产数据库,我已经重命名了几个外键的列。很显然,mysql使得我真的很痛苦。 我的解决方案是删除所有索引和外键,重命名id列,然后重新添加索引和外键。 这对在开发数据库的windows 5.1上运行得很好。 I去我的debian服务器上运行我的迁移脚本,这也是使用mysql 5.1,它给出了以下错误: $ $ p $ mysql> ; ALTER TABLE`c ..

将NotTime DateTime列添加到SQLite而不使用默认值?

看起来我不能添加一个非空约束或删除一个默认约束。我想在表中添加一个datetime列,并将所有值设置为任何值(可能是1970或2000年),但是似乎我没有默认使用not null,我无法删除默认值。我可以添加这个列吗? (再次只是一个简单的datetime不为null) 解决方案 而不是使用 ALTER TABLE ADD COLUMN ,创建一个具有额外列的新表,并复制旧数据。这将免除您 ..
发布时间:2017-04-14 03:09:05 数据库