我一直很需要SQL字符串列上的最大长度。有一些数据没有真正的最大长度。例如,假设您有一个字段来存储某人的名字,并且您将其设为NVARCHAR(50)
。总是有可能的(尽管极不可能)某个人的名字长于50个字符。nvarchar实时更改最大文件大小
在飞行中改变场的最大长度是否可行?我的意思是,当你做一个INSERT/UPDATE
时,你需要检查这个人的姓名是否超过50个字符,如果需要,你可以在INSERT/UPDATE
之前检查ALTER
。 (或者,如果需要的话,可以捕捉异常并执行ALTER
)。
如果表中有很多数据,那么ALTER
会是一个缓慢的操作?
假设您将列更改为NVARCHAR(100)
。这张桌子上的SELECT
会比从一开始就制作NVARCHAR(100)
慢吗?
即时更改数据库架构是一个糟糕的主意。将字段设置为合理的大小,并让代码负责验证输入。 –
选择好的默认值。这个线程的问题有一些深思熟虑的答案:http://stackoverflow.com/questions/919871/how-big-do-you-make-your-nvarchar – dcaswell
你正在使用哪些DBMS?甲骨文? Postgres的?另一种选择是尽可能长地定义列,然后使用检查约束来确保业务规则得以保留。更改检查约束不会对数据进行任何物理更改 –