草庐IT

​​ALTER​​

全部标签

mysql - 检查 ALTER TABLE 之前是否存在列 -- mysql

有没有办法在ALTERTABLEADDcoumn_name语句运行之前(或之后)检查mySQL数据库中是否存在列?有点像IFcolumnDOESNOTEXISTALTERTABLE东西。我试过ALTERIGNORETABLEmy_tableADDmy_column但如果我要添加的列已经存在,这仍然会引发错误。编辑:用例是在已安装的网络应用程序中升级表——为了简单起见,我想确保我需要的列存在,如果不存在,请使用添加它们改变表 最佳答案 由于mysql控制语句(例如“IF”)仅在存储过程中起作用,因此可以创建并执行一个临时的:DROPP

mysql - alter table 添加外键失败

我有3个表,它们都有innodb引擎:video(url,title,desc,country,...)url->primarykeyvideoCat(_url,category){_url,category}->primarykeyfavorite(fav_url,thumb_path)fav_url->primarykey然后我做:altertablefavoriteaddforeignkey(fav_url)referencesvideo(url)ondeletecascade一切都很顺利,但是当我尝试时:altertablevideoCataddforeignkey(_url)

sql - 添加 DATETIME 列的 Alter Table 语法是什么样的?

当我想将默认值设置为-例如-2011-01-2614:30:00时,我找不到将DATETIME列添加到mysql表的语法是什么样的有人知道那个语法是什么样子的吗?这就是我所拥有的ADDCOLUMNnew_dateDATETIMEAFTERpreceding_col,谢谢 最佳答案 如果您有任何疑问,请在此处解释语法http://dev.mysql.com/doc/refman/5.5/en/alter-table.htmlALTERTABLEyourTableADDCOLUMNnew_dateDATETIMENOTNULLDEFAU

mysql - MySQL的create index和alter add index有什么区别?

我有一个表“数据”,其中列有id(varchar)、text(varchar)、date(date)。在mysql上创建索引,我用的是heidiSQL。当我右键单击该列并选择创建新索引(键)时,代码显示它正在使用altertabledataaddindex'index1'('id,date(10)')这和createindexindex1ondata('id,date(10)')有什么区别 最佳答案 在服务器端的实现是一样的。唯一的区别是使用CREATEINDEX语法,您必须为索引指定一个名称。而使用ALTERTABLE,您可以为索

mysql - MySQL `ALTER TABLE ADD COLUMN AFTER COLUMN` 的性能 - 在大表上

我想实现以下使用以下命令将列添加到现有表:ALTERTABLEfooADDCOLUMNbarAFTERCOLUMNold_column;与没有AFTERCOLUMN选项的相同命令相比,此选项所花费的时间是否会显着延长,如下所示?ALTERTABLEfooADDCOLUMNbar;第一个命令会在执行过程中使用更多的tmptable空间来执行操作吗?上下文:我有一个非常大的表(考虑超过十亿行),我想使用AFTERCOLUMN选项添加一个额外的列,但我不想受到太多惩罚. 最佳答案 我会这样做:CREATETABLEnewtableLIKE

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

我有一个包含4列的表:ID、类型、所有者、描述。ID是AUTO_INCREMENTPRIMARYKEY,现在我想:ALTERIGNORETABLE`my_table`ADDUNIQUE(`type`,`owner`);当然,我很少有type='Apple'和owner='AppleCO'的记录。所以我的问题是,在ALTERTABLE之后,哪条记录将是特殊的,ID最小的还是最新插入的ID最大的? 最佳答案 将保留第一条记录,其余删除§§:IGNOREisaMySQLextensiontostandardSQL.Itcontrolsho

android - 房间数据库迁移没有正确处理 ALTER TABLE 迁移

Java.lang.IllegalStateExceptionMigrationdidn'tproperlyhandleuser(therealandroid.github.com.roomcore.java.User).Expected:TableInfo{name='user',columns={name=Column{name='name',type='TEXT',notNull=false,primaryKeyPosition=0},age=Column{name='age',type='INTEGER',notNull=true,primaryKeyPosition=0},i

MySQL:ALTER IGNORE TABLE 给出 "Integrity constraint violation"

我正在尝试使用ALTERIGNORETABLE+UNIQUEKEY从MySQL表中删除重复项。MySQL文档说:IGNOREisaMySQLextensiontostandardSQL.ItcontrolshowALTERTABLEworksifthereareduplicatesonuniquekeysinthenewtableorifwarningsoccurwhenstrictmodeisenabled.IfIGNOREisnotspecified,thecopyisabortedandrolledbackifduplicate-keyerrorsoccur.IfIGNOREis

mysql - ALTER TABLE ADD COLUMN 需要很长时间

我只是想在数据库中的表(main_table)中添加一个名为“位置”的列。我运行的命令是ALTERTABLEmain_tableADDCOLUMNlocationvarchar(256);main_table包含>2,000,000行。它持续运行2个多小时,仍未完成。我尝试使用mytop监视该数据库的事件以确保查询没有被其他查询进程锁定,但似乎没有。应该需要那么长时间吗?实际上,我只是在运行此命令之前重新启动了机器。现在这个命令仍在运行。我不知道该怎么办。 最佳答案 您的ALTERTABLE语句意味着mysql将不得不重写表的每一行

mysql - 使用 ALTER 删除 MySQL 中存在的列

如果存在MySQL表中的列,如何使用ALTER删除该列?我知道我可以使用ALTERTABLEmy_tableDROPCOLUMNmy_column,但如果my_column不存在,则会引发错误。有条件删除列的替代语法吗?我使用的是MySQL4.0.18版。 最佳答案 对于MySQL,没有:MySQLFeatureRequest.无论如何,允许这样做可以说是一个非常糟糕的主意:IFEXISTS表示您正在对具有(对您而言)未知结构的数据库运行破坏性操作。在某些情况下,这对于快速而肮脏的本地工作来说是可以接受的,但如果您想针对生产数据运行