扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:赛迪网 2010年4月8日
关键字: 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年已过,请你最好还是使用四位来表示年份。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者