关于主键的insert

suxiaolsx 2011-10-28 09:49:59
我想用insert在一个已经建好的表中插入多行数据,怎么实现主键id自动增加啊???
前提是表中主键的“标识”是“否”。是不是调用什么函数啊???
...全文
135 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
suxiaolsx 2011-10-28
  • 打赏
  • 举报
回复
搞定了,多谢了,结贴
pengxuan 2011-10-28
  • 打赏
  • 举报
回复

/*
id name
----------- ----------
1 张三
2 李四
3 王五

(3 行受影响)
*/
pengxuan 2011-10-28
  • 打赏
  • 举报
回复

if object_id('tb','U') is not null
drop table tb
go
create table tb
(
id int,
name varchar(10)
)
go
insert into tb select (select isnull(max(id)+1,'1') from tb),'张三'
insert into tb select (select isnull(max(id)+1,'1') from tb),'李四'
insert into tb select (select isnull(max(id)+1,'1') from tb),'王五'
中国风 2011-10-28
  • 打赏
  • 举报
回复
Create table t(ID int identity(1,1) primary key,Name nvarchar(50))

go
insert t select 'a'

insert t select 'b'
go
select * from t
/*
ID Name
1 a
2 b
*/
drop table t
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
--创建测试表
CREATE TABLE t1(ID int IDENTITY,A int)
GO
--插入记录
INSERT t1 VALUES(1)
GO

--1. 将IDENTITY(标识)列变为普通列
ALTER TABLE t1 ADD ID_temp int
GO

UPDATE t1 SET ID_temp=ID
ALTER TABLE t1 DROP COLUMN ID
EXEC sp_rename N't1.ID_temp',N'ID',N'COLUMN'
INSERT t1 VALUES(100,9)
GO

--2. 将普通列变为标识列
CREATE TABLE t1_temp(ID int,A int IDENTITY)
SET IDENTITY_INSERT t1_temp ON
INSERT t1_temp(ID,A) SELECT * FROM t1
SET IDENTITY_INSERT t1_temp OFF
DROP TABLE T1
GO

EXEC sp_rename N't1_temp',N't1'
INSERT t1 VALUES(109999)
GO

--显示处理结果
SELECT * FROM t1
/*--结果:
ID A
----------------- -----------
1 1
100 9
109999 10
--*/
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
只能把普通列变成标识列啊
koumingjie 2011-10-28
  • 打赏
  • 举报
回复


create table tb
(
id int,
name varchar(10)
);


create function [dbo].[F_getID]()
returns int
as
begin
declare @maxid int

select @maxid=isnull(max(id),0) + 1 from tb
return @maxid
end

insert into tb(id,name) values(dbo.[F_getID](),'a')
insert into tb(id,name) values(dbo.[F_getID](),'b')
insert into tb(id,name) values(dbo.[F_getID](),'c')
insert into tb(id,name) values(dbo.[F_getID](),'d')

select * from tb

id name
----------- ----------
1 a
2 b
3 c
4 d

(4 行受影响)
suxiaolsx 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]

?有自增列么?
[/Quote]

没有,表中没有设置。
suxiaolsx 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 koumingjie 的回复:]

尝试用触发器试试
[/Quote]

我想说的是直接在insert中调用函数就可以让id自增,触发器该怎么用啊
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
?有自增列么?
koumingjie 2011-10-28
  • 打赏
  • 举报
回复
尝试用触发器试试
koumingjie 2011-10-28
  • 打赏
  • 举报
回复

这样不行吗?

create table tb
(
id int identity(1,1)
)
suxiaolsx 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 koumingjie 的回复:]

自动增长列
[/Quote]

不是,表已经创建好了,只是向表中添加数据。该怎么弄
koumingjie 2011-10-28
  • 打赏
  • 举报
回复
自动增长列

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧