有时我在数据库设计中遇到以下情况,我想知道处理此案例的最佳做法是什么:::
例如我有一个特定的表,过了一会儿,当操作中的数据库和一些真实数据已经输入..我需要添加一些必需的字段(假设不接受null)..
在这种情况下最好的做法是什么..
使字段接受null为(已经在表格中输入了一些数据,并对重要约束进行了划分)并尝试通过代码中的某些验证强制用户输入此字段。
截断所有输入的数据并重新进入它们(繁琐的工作)..
有关此问题的任何其他建议......
答案 0 :(得分:2)
这取决于要求。如果用于填充新列的现有行的数据不能立即可用,那么我通常更愿意创建一个新表,并在数据存在时填充新行。如果您拥有每一行的所有数据,则将新列放入原始表中。
答案 1 :(得分:1)
如果可能,我会为新列设置默认值。
e.g。对于Varchar
alter table table_name
add column_name varchar(10) not null
constraint column_name_default default ('Test')
更新后,您可以删除默认
alter table table_name
drop constraint column_name_default
很多都会达到您的要求。
答案 2 :(得分:0)
这取决于您的应用程序,您的数据库方案,您的实体。
答案 3 :(得分:-1)
最好的方法是截断数据并重新输入,但项目不必太繁琐。临时表和表变量可以帮助解决这个问题。我们想到一个简单的程序:
在SQL Server Management Studio中,右键单击要修改的表,然后选择Script Table As
> CREATE To
> New Query Editor Window
。
在#
声明中的表名前添加CREATE
。
将所有记录移动到临时表中,使用以下内容:
INSERT INTO #temp SELECT * FROM original
然后运行脚本将所有记录保存到临时表中。
截断原始表格,并进行必要的更改。
右键点击表格,然后选择Script Table As
> INSERT To
> Clipboard
,将其粘贴到您的查询编辑器窗口中,并使用INSERT .. SELECT
修改它以从临时表中读取记录。
就是这样。不可否认,不是很简单,但保存完好的数据库几乎总是值得轻微麻烦。