SQL Insert into 语句插入后返回新插入的自动增长ID

本文介绍在SQL Server中如何获取刚插入记录的自增ID。主要分为两种情况:一是在存储过程中插入并使用全局变量返回ID;二是在代码中执行Insert语句并利用Output子句返回新创建的ID。

这里分两种情况,

第一存储过程中插入,插入后使用

    SET @FID=@@IDENTITY  
这个是一个全局变量,可以返回新插入的自动增长ID,然后在Out put出来就可以了。

第二种,在代码中运行Insert 语句

这种做法在SQL Server 2005 及以上版本才有用

Insert Form (StoreID,FormTypeID,FormNumber,RelatedFID,ContractNumber," & _
                    "ClientID,CreatorID,Status,SystemDate,SystemTime,TransType," & _
                    "TransMeans,TransCompany,nuTemperature)output inserted.FID  " & _
                    "Values (@StoreID,@FormTypeID,@FormNumber,@RelatedFID,@ContractNumber, " & _
                    "@ClientID,@CreatorID,9,@ReceiveDate,getdate(),@TransType," & _
                    "@TransMeans,@TransCompany,@nuTemperature)

在Insert 语句中加上Output Inserted.ID来返回新创建的ID



在使用 SQL 的 `INSERT INTO` 语句插入数据时,若表结构中新增了字段(列),则需要根据具体需求调整插入语句以包含这些字段的数据。以下是几种常见情况的处理方式: ### 插入指定字段的数据 如果只希望插入部分字段的数据,包括新增字段,可以明确列出目标字段名,并按顺序提供对应的值: ```sql INSERT INTO 表名 (字段1, 新增字段2, 字段3) VALUES ('字段1的值', '新增字段2的值', '字段3的值'); ``` 这种方式适用于新增字段已存在但尚未插入数据的情况,确保新增字段也能被正确赋值[^2]。 --- ### 批量插入多条记录并包含新增字段 当需要一次性插入多条记录且包含新增字段时,可以通过逗号分隔多个 `VALUES` 子句来实现批量插入: ```sql INSERT INTO 表名 (字段1, 新增字段2, 字段3) VALUES ('字段1的值1', '新增字段2的值1', '字段3的值1'), ('字段1的值2', '新增字段2的值2', '字段3的值2'), ('字段1的值3', '新增字段2的值3', '字段3的值3'); ``` 该方法不仅提高了插入效率,还能有效支持新增字段的批量赋值[^1]。 --- ### 处理中文字段名和特殊命名 在 SQL Server 中,如果新增字段名为中文或包含特殊字符,则必须使用方括号 `[]` 将字段名包裹起来,以避免语法错误: ```sql INSERT INTO 表名 ([中文字段], [新增中文字段], 字段3) VALUES ('中文字段的值', '新增中文字段的值', '字段3的值'); ``` 这是 SQL Server 对字段名进行特殊处理的要求,否则会导致插入失败[^3]。 --- ### 动态分区插入(Hive) 在 Hive 中,若新增字段属于动态分区的一部分,可结合 `INSERT OVERWRITE` 或 `INSERT INTO` 语句进行插入操作: ```sql SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict; INSERT OVERWRITE TABLE test_1 PARTITION (city_code, cur_day) SELECT t.id, t.name, t.classes, t.scores, t.city_code, t.cur_day FROM test_1_tmp t; ``` 此方式允许将新增字段作为分区字段的一部分,同时支持追加或覆盖已有分区数据[^4]。 --- ### 注意事项 - **字段顺序**:插入字段的顺序应与 `VALUES` 中提供的值顺序保持一致。 - **自动增长字段**:若表中存在自增字段(如 `CustomerID`),无需在 `INSERT INTO` 语句中显式指定其值,数据库会自动处理[^2]。 - **兼容性**:不同数据库系统对 `INSERT INTO` 的支持略有差异,特别是在批量插入和中文字段处理方面,需根据具体数据库特性调整语句格式[^5]。 通过上述方法,可以在新增字段的情况下灵活使用 `INSERT INTO` 语句完成数据插入操作,同时保证语句的正确性和高效性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值