Questions tagged «alter-table»

“ ALTER TABLE”是一条SQL语句,它允许您对数据库表进行模式更改(即,从现有表添加,删除或更改列)。

19
将MySQL列更改为AUTO_INCREMENT
我试图AUTO_INCREMENT在事实发生后修改表使其成为主键列。我尝试了以下SQL,但是收到了语法错误通知。 ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT 我做错什么了吗? + -------------------- + | VERSION()| + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
194 sql  mysql  alter-table 


4
我可以在SQL Server的添加列语句中创建命名默认约束吗?
在SQL Server中,我在表上有一个新列: ALTER TABLE t_tableName ADD newColumn NOT NULL 失败是因为我指定了NOT NULL而未指定默认约束。该表不应具有默认约束。 为了解决这个问题,我可以使用默认约束创建表,然后将其删除。 但是,似乎没有任何方法可以指定默认约束作为此语句的一部分,因此,要摆脱它,我唯一的方法是在sys.default_constraints中查找一个存储过程。表。 对于可能经常发生的操作而言,这有点混乱/冗长。有人对此有更好的解决方案吗?


7
如何在MySQL的ENUM类型列中添加更多成员?
MySQL参考手册未提供有关如何执行此操作的明确示例。 我有一个ENUM类型的国家/地区名称列,需要在其中添加更多国家/地区。实现此目的的正确MySQL语法是什么? 这是我的尝试: ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia'); 我得到的错误是: ERROR 1265 (01000): Data truncated for column 'country' at row 1. 该country列是上述陈述中的ENUM类型的列。 显示创建表输出: mysql> SHOW CREATE TABLE carmake; +---------+---------------------------------------------------------------------+ | Table | Create Table +---------+---------------------------------------------------------------------+ | carmake | CREATE TABLE `carmake` ( `carmake_id` tinyint(4) NOT NULL AUTO_INCREMENT, `name` tinytext, …
157 mysql  enums  alter-table 

3
如何更改MySQL列定义?
我有一个名为test的mySQL表: create table test( locationExpect varchar(120) NOT NULL; ); 我想将locationExpect列更改为: create table test( locationExpect varchar(120); ); 如何快速完成?
156 mysql  alter-table 

9
PostgreSQL-将varchar列的大小更改为较短的长度
我ALTER TABLE对一个非常大的表(近3000万行)上的命令有疑问。它的一列是a varchar(255),我想将其调整为a varchar(40)。基本上,我想通过运行以下命令来更改列: ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40); 如果过程很长,我没有问题,但是在ALTER TABLE命令期间似乎我的表不再可读。有没有更聪明的方法?也许添加一个新列,从旧列中复制值,删除旧列,最后重命名新列? 任何线索将不胜感激!提前致谢, 注意:我使用PostgreSQL 9.0。



5
更改MySQL表以在列上添加注释
我一直在检查MySQL文档中的ALTER TABLE,它似乎没有提供添加或修改列注释的方法。我怎样才能做到这一点? -- for table ALTER TABLE myTable COMMENT 'Hello World' -- for columns -- ???
109 mysql  alter-table 

19
ALTER TABLE没有锁定表?
当在MySQL中执行ALTER TABLE语句时,整个表在语句期间被锁定(允许并发读取,但禁止并发写入)。如果它是一个大表,则可能会在很长一段时间内阻止INSERT或UPDATE语句。有没有一种方法可以进行“热更改”,例如以在整个过程中仍可更新表的方式添加列? 通常,我对MySQL解决方案感兴趣,但如果MySQL无法做到,我也会对其他RDBMS感兴趣。 澄清一下,我的目的仅仅是避免在需要额外表列的新功能投入生产时避免停机。任何数据库架构都会随着时间而改变,这是生活中的事实。我不明白为什么我们应该接受这些变化不可避免地导致停机的原因。那太弱了。
107 sql  mysql  ddl  alter-table 



14
如果SQLite中不存在ALTER TABLE ADD COLUMN
最近,我们需要将列添加到一些现有的SQLite数据库表中。可以使用来完成ALTER TABLE ADD COLUMN。当然,如果表格已被更改,我们希望不加更改。不幸的是,SQLite不支持上的IF NOT EXISTS子句ALTER TABLE。 我们当前的解决方法是执行ALTER TABLE语句,并忽略所有“重复的列名”错误,就像此Python示例一样(但在C ++中)。 但是,我们通常的设置数据库模式的方法是使.sql脚本包含CREATE TABLE IF NOT EXISTS和CREATE INDEX IF NOT EXISTS语句,可以使用sqlite3_exec或sqlite3命令行工具来执行该脚本。我们不能放入ALTER TABLE这些脚本文件,因为如果该语句失败,它将不执行任何操作。 我想将表定义放在一个地方,而不要在.sql和.cpp文件之间分割。有没有办法ALTER TABLE ADD COLUMN IF NOT EXISTS在纯SQLite SQL中编写变通办法?

5
将列添加为外键会使外键约束中引用的ERROR列不存在
我有以下设置, CREATE TABLE auth_user ( id int PRIMARY KEY ); CREATE TABLE links_chatpicmessage (); 我想增加一列命名sender到links_chatpicmessage这是一个外键被称为另一个表auth_user的id列。 为了实现以上目的,我正在终端上尝试以下操作: ALTER TABLE links_chatpicmessage ADD FOREIGN KEY (sender) REFERENCES auth_user; 但这给我一个错误: 错误:外键约束中引用的列“发件人”不存在 我该如何解决?

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.