2011-12-16 32 views
1

我想運行一個腳本來自動升級一些數據庫表,但有些系統根本沒有表存在。如何最好地寫,在MySQL中是這樣的:如果表已經存在,可以選擇添加列和/或在MySQL中創建表?

  1. 我有兩列,地址城市現有的表。我想補充列或創建一個新表,以不具有該表的所有系統,所以:

  2. CREATE表「你好」( 地址文本NOT NULL,
    城市TINYTEXT NOT NULL, 版本tinytext NOT NULL, )

  3. 但是,如果'hello'存在但沒有列版本,請保留表但添加新列?

  4. 在「版本」列中,爲所有保存的數據添加值「old」,但爲所有新條目添加「新」,我將使用該數據庫填充數據庫。

  5. 面向未來,我可以隨時添加列,在迭代中檢查,因爲我升級不同版本的軟件?

編輯:實際升級腳本上的一些PHP代碼將有所幫助;想象我有一個「激活」功能,應該檢查表格,創建它或以其他方式修改它...

+0

檢查此SO回答 - 應該解決您的問題:[添加列到MySQL表,如果它不存在](http://stackoverflow.com/questions/972922/add-column-to-mysql-table-如果它不存在) – rdlowrey 2011-12-16 16:50:49

回答

1

回答您的評論以瞭解如果表格不存在或不想要使用CREATE TABLE IF NOT EXISTS tablename

<?php 

$db_name = 'mydb'; 
$table_name = 'table'; 

mysql_connect("localhost", "mysql_user", "mysql_password"); 
$result = mysql_list_tables($db_name); 
$num_rows = mysql_num_rows($result); 

for ($i = 0; $i < $num_rows; $i++) { 
    if (mysql_tablename($result, $i) == $table_name) { 
    // the specified table exists, do what you need to 
    break; 
    } 
} 

?> 
1

檢查表存在:http://forums.mysql.com/read.php?101,112346,112672#msg-112672

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'databasename' 
AND table_name = 'tablename'; 

檢查表中的一行存在: Check if a row exists, otherwise insert

我不知道是什麼你的意思是未來的證據?這些都是非常普通的SQL查詢,所以它應該非常便於攜帶。唯一的區別是表格檢查是特定於mysql的,但將其更改爲另一個數據庫應該不是什麼大問題。

相關問題