首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql话语中插入与自动增长同样的数

2013-08-10 
sql语句中插入与自动增长同样的数比如有表student,列有id,name,NO,id为自动增长,如何实现在插入的时候NO的

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'
/*
idnumNAME
11name1
22name2
*/

--方法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前两列。
------解决方案--------------------


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


直接把之前的删除,然后重新把这个NO列加上就可以了
按照你这种方法,如果我要给no插其他数据的话就不可行了,怎么办 


那你这个需求就是自相矛盾的,即想插入的时候和iD列一样,又想给NO插入其他值。
如果想要可以修改那个值,就不能用计算列了
只能写2个语句或者使用触发器了

热点排行