alter-table相关内容
在MySQL中执行ALTER TABLE语句时,整个表在语句期间被锁定(允许并发读取,但禁止并发写入).如果这是一个大表,则可能会在很长一段时间内阻止INSERT或UPDATE语句.有没有一种方法可以进行“热更改",例如以一种使表在整个过程中仍可更新的方式添加列? 大多数情况下,我对MySQL解决方案感兴趣,但如果MySQL无法做到,我也会对其他RDBMS感兴趣. 为澄清起见,我的目的
..
我有一个包含4列的表格:ID,类型,所有者,描述. ID是AUTO_INCREMENT主键,现在我要: ALTER IGNORE TABLE `my_table` ADD UNIQUE (`type`, `owner`); 我当然很少有类型='Apple'和owner ='Apple CO'的记录.因此,我的问题是,哪条记录将是保留在该ALTER TABLE之后的特殊记录,ID最
..
我知道,我们不能使用modify column syntax重命名列,但是可以使用change column syntax. 我的问题是:modify syntax的主要用途是什么? 例如, alter table tablename change col1 col1 int(10) not null 代替 alter table tablename modify co
..
我一直在查看 ALTER TABLE的MySQL文档,并且似乎没有提供向列添加或修改注释的方法.我该怎么办? -- for table ALTER TABLE myTable COMMENT 'Hello World' -- for columns -- ??? 解决方案 尝试: ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) CO
..
我有此代码: ALTER TABLE `settings` ADD COLUMN `multi_user` TINYINT(1) NOT NULL DEFAULT 1 而且我只想在此列不存在的情况下更改此表. 我正在尝试许多不同的方法,但是没有任何效果: ALTER TABLE `settings` ADD COLUMN IF NOT EXISTS `multi_user`
..
我有一个名为provider的表.我有三列分别称为person,place,thing.可以有重复的人,重复的地方和重复的事物,但是永远不可能有重复的人与事物的组合. 我如何通过以下三列在ALTER TABLE中为该表添加一个复合主键? 解决方案 ALTER TABLE provider ADD PRIMARY KEY(person,place,thing); 如果主键已经存在,
..
我正在尝试修改一个表,使事实之后的主键列为AUTO_INCREMENT.我尝试了以下SQL,但收到了语法错误通知. ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT 我做错了还是不可能? +--------------------+ | VERSION() | +--------------
..
我正在尝试使用pyodbc和Python 3.5向MS Access数据库表中添加一列. 使用表达式 self.cursor.execute("ALTER TABLE data ADD COLUMN testColumn TEXT(10)") 可以正常工作,但是当我尝试添加默认值(DEFAULT"no")时,它将引发语法错误.我尝试了多种组合,但是没有运气. 非常感谢您的帮助
..
将Boolean数据类型列添加到表中的正确Access DDL查询是什么? 到目前为止,我已经看到了如下示例... ALTER TABLE MyTable ADD MyNewColumName BIT 但是自那以后,它们似乎并不是100%正确的 Access不会将复选框控件应用于新添加的列,并且 该列的允许值似乎是0和-1 解决方案 DAO示例. ''Requ
..
可能重复: ALTER TABLE语句中的DEFAULT子句会导致语法错误 我正在尝试使用MS Access中的SQL查询执行以下语句; ALTER TABLE [table] ALTER COLUMN [column] SET DEFAULT 'default value' 但是,我得到一个显示错误Syntax error in ALTER TABLE statement.
..
我在Postgres数据库中有一列类型为Varchar的列,我本想是整数...现在我想更改它们,不幸的是,这似乎不适用于我的rails迁移. change_column :table1, :columnB, :integer 哪个似乎输出此SQL: ALTER TABLE table1 ALTER COLUMN columnB TYPE integer 所以我尝试这样做:
..
我错误地将列命名为hased_password而不是hashed_password. 如何通过使用迁移来重命名此列来更新数据库架构? 解决方案 rename_column :table, :old_column, :new_column 您可能需要创建一个单独的迁移来执行此操作. (将FixColumnName重命名.): script/generate migration
..
我有〜1000个以相同前缀开头的表: table_prefix_ {SOME_ID} (我可以从另一个表中获取ID) 在mysql中循环遍历 所有 表的快速方法是什么: ALTER TABLE`table_prefix_ {some_id}`ADD INDEX` fields`(`field`) 解决方案 忘记循环。只需这样做: 选择concat('alter
..
我有一个MySQL数据库,它运行了一段时间,并对其进行了很多更改。最近我查看了它,我注意到在某些情况下我在同一个字段上加倍了索引。有些索引丢失了,一般来说所有索引都有很多混乱。 我想从表中删除所有索引。稍后我有一个准备好的脚本,它将运行 ALTER TABLE 并添加相关索引。 有没有办法从表中删除所有索引? 解决方案 如果你有phpmyadmin或任何类似工具,你可以很容易地
..
我需要在~5M行MySQL表上创建索引。这是一个生产表,如果我运行CREATE INDEX语句,我担心一切都完整... 有没有办法创建该索引而不阻塞插入并选择? 只是想知道我没有停下来,创建索引并重启我的系统! 解决方案 [2017]更新:MySQL 5.6支持在线索引更新 https://dev.mysql.com/doc/refman/5.6/en/innodb-cr
..
在SQLite FAQ [1]中提到SQLite没有完整的ALTER TABLE支持。在上一个关于StackOverflow [2]的问题中提到了一个技巧来完成表格修改。 我想知道的是如何保持FOREIGN KEY引用到后来被删除的重命名表。我应该对每一个与我正在修改的实际表具有外键关系的表执行相同的技巧吗? $ b [1] http://www.sqlite.org/lang_alter
..
我有一个生产数据库,我已经重命名了几个外键的列。很显然,mysql使得我真的很痛苦。 我的解决方案是删除所有索引和外键,重命名id列,然后重新添加索引和外键。 这对在开发数据库的windows 5.1上运行得很好。 I去我的debian服务器上运行我的迁移脚本,这也是使用mysql 5.1,它给出了以下错误: $ $ p $ mysql> ; ALTER TABLE`c
..
如何更改 VARCHAR()键入 DATETIME 使用 ALTER 在MySQL中? 解决方案 ALTER TABLE MODIFY dataType约束; 对于您的要求,将 ALTER TABLE MODIFY约会时间; 参考 http://dev
..
看起来我不能添加一个非空约束或删除一个默认约束。我想在表中添加一个datetime列,并将所有值设置为任何值(可能是1970或2000年),但是似乎我没有默认使用not null,我无法删除默认值。我可以添加这个列吗? (再次只是一个简单的datetime不为null) 解决方案 而不是使用 ALTER TABLE ADD COLUMN ,创建一个具有额外列的新表,并复制旧数据。这将免除您
..
我使用MS Access(2003)数据库。一旦我创建一个列,我使用sql语句设置NOT NULL: ALTER TABLE Table1 ALTER column myColumn INTEGER not null 有没有办法改回回允许空值?我已经尝试过: ALTER TABLE Table1 ALTER column myColumn INTEGER
..