2010-12-01 19 views
0

我正在考慮爲非關鍵任務項目創建一個MySQL數據庫。我在考慮一個場景,以防萬一我必須在表格中插入另一列時,如何在不影響已有列的數據完整性的情況下實現這一目標,並指定這些額外列的默認值?我希望SQL和Java持久性API(JPA)的答案。未來打樣SQL表?

此外,我還想知道如何在父表格的單元格中添加表格。

回答

0

除非您執行鏈接列的操作,例如創建多列索引,唯一鍵或類似的東西,否則添加列不應影響預先存在的數據。但是,如果舊的列之間沒有這種聯繫,請根據需要添加任意數量的列。瘋了!

4

這很容易:

ALTER TABLE mytable 
ADD COLUMN newcolumn VARCHAR(20) 

你可以給它一個默認值,可以使用AFTER xyz條款給它的「XYZ」列之後添加(或省略它只是列添加到末尾)。

沒有什麼特別的,任何RDBMS都可以讓你在數據庫中實時添加(刪除)列。

+0

那麼Hibernate/JPA代碼呢? – Catfish 2010-12-01 12:19:20

1

如前所述,您可以使用所選RDBMS的語法簡單地將一列添加到表中。

如果你不想在這一點上改變你的代碼,你所能做的就是提供一個合理的默認值(null也可以是一個合理的默認值)。這樣你的應用程序仍然可以插入行而不會有任何問題。稍後,您可以映射您的列並開始在您的應用程序中使用它。

公平起見,將dbschema更新與新版本的應用程序一起發佈很常見。

1

如果代碼引用位置列而不是關鍵字列,則可能會影響您的代碼的一件事。如果您希望給定的firstname位於第5位,而不是使用關鍵字firstname來引用它,則可能需要在表的末尾添加新列。