日期:2014-05-17  浏览次数:20478 次

sql语句中插入与自动增长同样的数
比如有表student,列有id,name,NO,id为自动增长,如何实现在插入的时候NO的值和id一样的数字?
SQL 自动增长

------解决方案--------------------
把NO设置为计算列
alter table student add NO as ID
------解决方案--------------------
插入后再更新, s
------解决方案--------------------
既然NO和ID一样,调用时直接用ID就可以了。
何必多一个字段。
------解决方案--------------------
引用:
既然NO和ID一样,调用时直接用ID就可以了。
何必多一个字段。
是啊,感觉多此一举啊
------解决方案--------------------
CREATE TABLE temp(id int IDENTITY, num int,NAME VARCHAR(10))
go

--方法1,写个触发器
CREATE TRIGGER tr_test ON temp
AFTER INSERT
AS
begin
UPDATE A
SET A.num = A.id
FROM temp A
INNER JOIN INSERTED I
ON A.id = I.id
END

--test
INSERT temp (name) SELECT 'name1' UNION ALL SELECT 'name2'
/*
id num NAME
1 1 name1
2 2 name2
*/

--方法2,output into 方法
DECLARE @temp table (id int)

INSERT temp (name) 
OUTPUT INSERTED.id
INTO @temp(id)
SELECT 'name3' UNION ALL SELECT 'name4'

UPDATE A
SET A.num = A.id
FROM temp A
INNER JOIN @temp I
ON A.id = I.id

------解决方案--------------------
引用:
把NO设置为计算列
alter table student add NO as ID
各表中的列名必须唯一。在表 'Student' 中多次指定了列名 'NO'。什么意思? 


直接把之前的删除,然后重新把这个NO列加上就可以了
------解决方案--------------------
方案1:insert的时候用insert into student select id,name ,id as no from 数据集,如果是insert xxx values()的话直接写死。
方案2:用计算列,这样你直接只需要insert前两列。
------解决方案--------------------