我正在考慮爲非關鍵任務項目創建一個MySQL數據庫。我在考慮一個場景,以防萬一我必須在表格中插入另一列時,如何在不影響已有列的數據完整性的情況下實現這一目標,並指定這些額外列的默認值?我希望SQL和Java持久性API(JPA)的答案。未來打樣SQL表?
此外,我還想知道如何在父表格的單元格中添加表格。
我正在考慮爲非關鍵任務項目創建一個MySQL數據庫。我在考慮一個場景,以防萬一我必須在表格中插入另一列時,如何在不影響已有列的數據完整性的情況下實現這一目標,並指定這些額外列的默認值?我希望SQL和Java持久性API(JPA)的答案。未來打樣SQL表?
此外,我還想知道如何在父表格的單元格中添加表格。
除非您執行鏈接列的操作,例如創建多列索引,唯一鍵或類似的東西,否則添加列不應影響預先存在的數據。但是,如果舊的列之間沒有這種聯繫,請根據需要添加任意數量的列。瘋了!
這很容易:
ALTER TABLE mytable
ADD COLUMN newcolumn VARCHAR(20)
你可以給它一個默認值,可以使用AFTER xyz
條款給它的「XYZ」列之後添加(或省略它只是列添加到末尾)。
沒有什麼特別的,任何RDBMS都可以讓你在數據庫中實時添加(刪除)列。
如前所述,您可以使用所選RDBMS的語法簡單地將一列添加到表中。
如果你不想在這一點上改變你的代碼,你所能做的就是提供一個合理的默認值(null也可以是一個合理的默認值)。這樣你的應用程序仍然可以插入行而不會有任何問題。稍後,您可以映射您的列並開始在您的應用程序中使用它。
公平起見,將dbschema更新與新版本的應用程序一起發佈很常見。
如果代碼引用位置列而不是關鍵字列,則可能會影響您的代碼的一件事。如果您希望給定的firstname
位於第5位,而不是使用關鍵字firstname
來引用它,則可能需要在表的末尾添加新列。
那麼Hibernate/JPA代碼呢? – Catfish 2010-12-01 12:19:20