科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件SQL Server数据库Insert插入问题小结

SQL Server数据库Insert插入问题小结

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Insert插入命令是SQL Server中常用的命令之一,因为其涉及到具体的内容不同的字段即列变量,插入时往往非常容易出错,下面将常用错误列出来与初学者共勉。

来源:赛迪网 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章