12
A
回答
9
的ALTER TABLE syntax似乎並沒有提供這樣的可能性:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
partition_options
alter_specification:
table_options
[...]
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
[...]
More specifically:當您使用CHANGE
或MODIFY
,column_definition必須包括數據 類型以及應適用於所有屬性新列,其他 比索引屬性如
PRIMARY KEY
或UNIQUE
。原始定義中存在的屬性 未被指定用於新的 定義。
+0
阿爾瓦羅,謝謝你的好回答!最後一段看起來像是我的問題的確切答案。 – TMS 2011-12-19 08:47:28
1
在我的情況下,我想將所有columnNames從「id_something」更改爲「idSomething」,然後能夠更快,更輕鬆地將數據加載到我的C#對象。我一直在尋找一個腳本來做到這一點,它看起來不可能找到:( 最後我做到了我自己在C# 在這裏,你有我使用的主要功能:
我希望這將是有用的爲大家!
public bool columnesRename(string oldName, string newName, string dataBase, string dataTable)
{
bool res = true;
string definicio = columnaDefinicioGet(oldName, dataBase, dataTable);
cmd.CommandText = String.Format("alter table {0} change {1} {2} {3} ", dataTable, oldName, newName, definicio);
Debug.WriteLine(String.Format("canviant taula {0}: {1} per {2}", dataTable, oldName, newName));
Debug.WriteLine(cmd.CommandText);
Debug.WriteLine(cmd.ExecuteNonQuery());
return res;
}
public string columnaDefinicioGet(string columna, string dataBase, string dataTable)
{
string definicio = "";
cmd.CommandText = String.Format
(
@"select column_type, is_nullable, extra, column_default from information_schema.columns where table_schema = '{0}' and table_name = '{1}' and column_name = '{2}'"
, dataBase, dataTable, columna
);
MySqlDataReader dr = cmd.ExecuteReader();
dr.Read();
string nulONo = (dr[1].ToString() == "NO") ? "NOT NULL" : "NULL";
string valorDefault = (dr[3].ToString() == "NULL" || dr[3].ToString() == "") ? dr[3].ToString() : "DEFAULT '" + dr[3].ToString() + "'";
definicio = String.Format("{0} {1} {2} {3}", dr[0], nulONo, dr[2], valorDefault);
dr.Close();
return definicio;
}
相關問題
- 1. 重命名列而不更改其類型
- 2. Powershell遞歸重命名文件,而不是重命名重複
- 3. 在mysql中重命名錶列
- 4. PHP擴展,而不將其重命名
- 5. jsonschema2pojo重複類(不重複的類名)
- 6. 重命名mysql中名爲「add」的列
- 7. Laravel模型在查詢中將MySQL表重命名爲複數
- 8. 重複的列名稱MySQL
- 9. MySQL的:#1060 - 重複列名
- 10. SQL-Server中的重複表定義(列)
- 11. 重命名錶列
- 12. Sqlite:重命名列和數據類型
- 13. Mysql使用重命名列
- 14. MySQL - 如何重命名列?
- 15. 重命名重複的行
- 16. 無法重命名mysql表
- 17. MySQL無法重命名錶
- 18. 無法重命名MySQL表
- 19. 重命名MySQL中的外鍵列
- 20. 重命名InnoDB表而不更新對其的外鍵引用?
- 21. 從多個表中重複SQL SELECT列而不重複數據
- 22. WordPress的重命名自定義後類型
- 23. 在Maya中將重複列表「L」重命名爲「R」python
- 24. GCC,重複類型定義和DWARF
- 25. EF 4.3遷移重命名列,而不是將其刪除
- 26. 自定義命名爲重點領域的TPT(表每型)EF
- 27. 命名的列重命名
- 28. 如何從基於自定義Java對象而不是基元類型的列表中刪除重複項?
- 29. 位於數組中的複雜類型的重命名字段
- 30. 重命名SharePoint列表的內容類型
不認爲這是可能的(除非你砍INFORMATION_SCHEMA)。 – 2011-12-18 16:41:31
@Tomas我能在這樣的情況,我們應該重命名列,而不問其重複的類型定義?謝謝:) – tyger 2011-12-18 17:38:18
@tyger,在如果你只是想重命名列 – TMS 2011-12-19 08:48:12