SQL Server插入问题小结
赵玉勇
Insert插入命令是SQL Server中常用的命令之一,因为其涉及到具体的内容不同的字段即列变量,插入时往往非常容易出错,下面将常用错误列出来与初学者共勉。
错误提示一:不能显式插入列值
在通过SQL Server 命令插入表中数据时,最常出现下面的错误提示:
“服务器: 消息 544,级别 16,状态 1,行 1
当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'Reply' 中的标识列插入显式值。”
这个错误使得插入操作成为徒劳,究竟是什么原因呢?其实原因在上面的提示中已经出现,即插入标识为OFF,也即关闭了。原因及解决:
这种情况的出现主要是由于插入时的复杂性决定的,因为在操作中,一次只能有一个表在活动状态,即只有一个表的IDENTITY_INSERT属性可以设置为ON,如果某个表已将此属性设置为ON,那么再向另一个表发出了SET IDENTITY_INSERT   ON将会出错。所以,只要在相应的插入语句前指明当前的数据库,操作者和操作的表就可以了,即:
set identity_insert bbs.dbo.reply on
其语法结构如下:
SET DENTITY_INSERT [database.[ owner.]] {   table   }{   ON|OFF   }
其中,参数database是指定的表所驻留的数据库名称。owner 是表所有者或操作者的名称table 是含有标识列即将要执行插入的表名。
将上面的语句填上相应的参数,后面再跟着相应的插入语句就没有问题了。

提示二:其他INSERT语句应用中的注意问题
这些注意问题将通过下面的示例来讲解,即将雇员John Smith的记录插入到表EMPLOYEES中,可以使用如下语句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10','Los Angles',16,45000)
首先要了解被插入的表的结构。上面的语句究竟能不能起作用,首先要对这个被插入的表进行了解。上面的表有六项:
EMPLOYEES(FIRST_NAME,LAST_NAME,HIRE_DATE,BRANCH_OFFICE,SALARY_LEVEL,YEAR_ SALARY),这说明,表名为EMPLOYEES,该表有六个字段(columns),又称为属性(attributes),它们也有其对应的汉语含义。
FIRST_NAME :正名
LAST_NAME:笔名
HIRE_DATE:雇用日期
BRANCH_OFFICE:分办事处
SALARY_LEVEL:工资级别
YEAR_ SALARY:年薪
其次,对于具体的值,要采用适用的形式,才能最终被插入命令接受。
用户可以用INSERT语句将一行记录插入到指定的一个表中。在本例中,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。因为,在SQL中逗号是元素的分隔符。同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年已过,请你最好还是使用四位来表示年份。

发表于: 2010-06-04 16:56 赵玉勇 阅读(813) 评论(0) 收藏 好文推荐

本博客所有内容,若无特殊声明,皆为博主原创作品,未经博主授权,任何人不得复制、转载、摘编等任何方式进行使用和传播。

作者该类其他博文:

发表评论(网友发言只代表个人观点,不代表本网站观点或立场。)

您尚未登录,请先【登录或注册

公告


多少IT事,尽付笑谈中crack

关于我

<2020年1月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

最近来访

留言簿(0)

文章分类

文章档案


最新评论

PC怎么可能过时,不过是厂商的宣传重点转到手机上去了。PC的功能和应用不是手机能代替的,有固定的市场和用户群,不会过时。
不过台式机倒是开始显出颓势,笔记本增速很快。笔记本成为主流倒是可能的。--【匿名用户】:E-works热心网友
没那么快淘汰吧--cirque
看起来像是给马云写的软文--为网游而呼吁
追求真相,这是互联网进步的意义。感谢赵老师分享!--柠檬草的味道
看来小小的输入法竞争还是激烈的。
谢谢博主分享,关注中~~--传奇
本人讨厌网络实名制久矣!--玛门
谢谢分享,关注中~~--蔡荣

阅读排行榜

评论排行榜