我正在考虑为非关键任务项目创建一个MySQL数据库。我正在考虑一种情况,如果我不得不在表中插入另一列,如何在不损害预先存在的列的数据完整性的情况下实现这一点,并指定这些附加列的默认值?我想要SQL和Java Persistence API(JPA)的答案。
此外,我还想知道如何在父表的单元格中添加表。
答案 0 :(得分:4)
很简单:
ALTER TABLE mytable
ADD COLUMN newcolumn VARCHAR(20)
您可以为其指定一个默认值,您可以使用AFTER xyz
子句在“xyz”列之后添加它(或将其保留为仅将列添加到末尾)。
没有什么特别之处,任何RDBMS都允许您在运行中向数据库中添加(和删除)列。
答案 1 :(得分:1)
如上所述,您只需使用所选RDBMS的语法向表中添加一列。
如果您不想在此时更改代码,您所能做的只是提供合理的默认值(null也可能是合理的默认值)。这样您的应用程序仍可以插入行而不会出现任何问题。稍后您可以映射列并开始在应用程序中使用它。
公平地说,将dbschema更新与新版本的应用程序一起发布是很常见的。
答案 2 :(得分:1)
可能对您的代码产生影响的一件事是,代码是指位置列而不是关键字列。如果您希望给定firstname
位于第5位,而不是使用关键字firstname
引用它,则可能需要在表格的末尾添加新列。
答案 3 :(得分:0)
添加列应该对预先存在的数据没有影响,除非您执行链接列的操作,例如创建多列索引,唯一键或类似的东西。但如果新的& amp;之间没有这种联系。旧列,添加任意数量的列。疯了!