23、SQL Server 数据修改之潜在限制
2013-06-14 23:29
127 查看
数据修改之潜在限制
即使逻辑正确,将正确的行修改为正确的值,仍为数据修改命令因为某些限制而不能正常执行。
一、数据类型/数据长度限制
最佳处理方法,使用Cast() 与Convert()解决
二、主键限制
a、主键必须是唯一值的
b、SQL Server提供了两种优秀的主键生成方法:标识列和GUID
1、标识列
本质上说是递增整数。
插入时不可提供标识列值(默认的),但可将identity_insert设置为on,将暂时关闭
标识列的自动添加值,允许在其对应的列中插入数据(显式提供标识列的值)。
注:同一个数据库中不能同时将多个表的identity_insert选项设为on,
设置的基本语法:
set identity_insert 表名 on/off
自动增长:在最近使用的标识列值上递增,有三种方法可以查看最近生成的标识值
1、@@identity:这个全局变量返回SQL Server为任何表,连接和作用域生成的最
后一个标识值
2、Scope_identity():该系统函数返回在当前调用批处理或过程的作用域内生成的最
后一个标识值
3、ident_current(‘table_name’):该函数返回为指定的表生成的最后一个标识值。
如:
print @@identity print ident_current('bumen') print ident_current('zhiwei')
结果:
14
14
8
2、全局唯一标识符GUID(Global Unique Identifiers)
GUDI非常适合用作主键值(实现方法:default 值),GUID是由SQL代码或列
默认值生成的,而不是在插入时自动生成的。GUID是用函数newid( )创建的,如果
将主键的默认值设为newid( ),将为每个新行生成一个新GUID,仅当Insert语句,
没有给列提供值时使用。
如:print newid();
结果:
E78360D4-3ACD-4FAC-A883-34F1CDA475EE
三、外键限制
1、在从表中插入新行时,如果外键值不与任何现有的主键值匹配,插入操作将失败
2、更新有外键指向它的主键值时失败
3、删除主键失败
四、唯一索引限制
值不唯一失败。
五、空值和默认值限制
不给没有默认值且不接受空值的列提供任何值会失败。
六、Check约束限制
一般由用户自定义的约束
七、after解发器限制
八、计算列
如:all=basic+up
更新这样的列时,失败。
九、不可更新视图导致的限制
十、使用With Check Option的视图导致的限制
十一、安全性限制
相关文章推荐
- SQL Server 2005的XML数据修改语言(XML DML)
- 修改 sql server 2000 系统表数据
- SQL SERVER示例:修改自定义数据类型精度
- sql server 数据修改不了的设计
- SQL SERVER 2008的几个新东西:插入,删除,修改一起来(适合数据的同步)-----merger
- 在SQL Server中动态修改数据表结构
- mysql笔记4 - SQL函数(聚合函数,标量函数(大小写,长度),mid函数(显示形式),as别名,union,add,drop,修改表中某列的数据类型,主键限制,外键限制,非空限制,trunca
- 22、SQL Server 数据修改之返回修改的数据
- SQL Server 2005的XML数据修改语言(XML DML)
- 记录一个SQL Server 2005的存储过程,循环修改数据例子
- SQL Server插入或修改数据是中文乱码的问题
- 如何修改设置使得SQL Server 2008能编辑200行以上的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- 修改PhpMyAdmin数据导入大小限制
- SQL Server中在存储过程中使用游标修改表中数据
- SQL Server对数据进行修改
- java操作sql server数据添加,修改,删除记录
- 22、SQL Server 数据修改之返回修改的数据
- 工作流系统的硬伤- 修改有数据的表单限制及解决方式分析