插入一条记录后想要立刻获取其数据表中的sql server主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站设计、成都网站制作、外贸网站建设、网站策划、网页设计、主机域名、网页空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。
个人感觉最快的方式就是,在插入数据后直接获取sql server主键的值,然后返回过来。
方法如下:
sql语句如下:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
在sql语句中加入SELECT @@IDENTITY AS returnName;用来获取sql server主键的值
在程序中获取返回值:
public int sqlexecutereader(string sql) { DBopen(); SqlCommand myComm = new SqlCommand(sql, Connection); int newID = Convert.ToInt32(myComm.ExecuteScalar()); DBclose(); return newID; }
当然在此处主键是int类型的自动增加的。DBopen();DBclose();的操作在此就不多说了。
可以参考下面的代码
SELECT t.* from user_cons_columns t where t.table_name = '表名' and t.position is not null; --表名必zd须大写,如:
TABLE_TEST ,column即为用户的主键,user_cons_columns即为用户要的主键名。
扩展资料:
SQL语句
添加主键
Alter table tabname add primary key(col)
说明:删除主键:Alter table tabname drop primary key(col)
创建索引
create [unique] index idxname on tabname(col…。)
删除索引:drop index idxname on tabname
参考资料来源:百度百科-SQL语句大全
SELECT
表名=case
when
a.colorder=1
then
d.name
else
''
end,
字段序号=a.colorder,
字段名=a.name,
标识=case
when
COLUMNPROPERTY(
a.id,a.name,'IsIdentity')=1
then
'√'else
''
end,
主键=case
when
exists(SELECT
1
FROM
sysobjects
where
xtype='PK'
and
name
in
(
SELECT
name
FROM
sysindexes
WHERE
indid
in(
SELECT
indid
FROM
sysindexkeys
WHERE
id
=
a.id
AND
colid=a.colid
)))
then
'√'
else
''
end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case
when
a.isnullable=1
then
'√'else
''
end,
默认值=isnull(e.text,'')
FROM
syscolumns
a
left
join
systypes
b
on
a.xtype=b.xusertype
inner
join
sysobjects
d
on
a.id=d.id
and
d.xtype='U'
and
d.name'dtproperties'
left
join
syscomments
e
on
a.cdefault=e.id
order
by
a.id,a.colorder
/*查询标识字段或主键字段 [根据表名查询] *./ SELECT字段序号=a.colorder, 字段名=a.name, 字段类型=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '标识字段'else '主键字段' end FROM syscolumns a where id=object_id(N'loginuser') --要查询的表名 and( --标识字段 COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 or --主键字段 exists(SELECT 1 FROM sysobjects where xtype='PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))))order by a.id,a.colorder/*查询当前数据库所有 标识字段、主键字段 *./SELECT表名=case when a.colorder=1 then d.name else '' end, 字段名=a.name,
外键(foreign
key)
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。换而言之,如果关系模式r中的某属性集不是r的主键,而是另一个关系r1的主键则该属性集是关系模式r的外键,通常在数据库设计中缩写为fk。在sql
server中,主键是一个表中的约束。这个约束,一张表只能有一个,一般作为id使用,这个约束一般给别人外键引用。这个约束的功能就是,不可重复,保证了唯一性,正是这种特性,使得大多数人都把他作为表中id的字段使用。一个表的外键
可以
是另一个表的主键
方法一:创建表之后,alter
table
table_name
add
primary
key(字段1,字段2)
方法二:CREATE
TABLE
表名
(字段名1
Int
Not
Null,
字段名2
nvarchar(13)
Not
Null
字段名3…………
字段名N…………)
GO
ALTER
TABLE
表名
WITH
NOCHECK
ADD
CONSTRAINT
[PK_表名]
PRIMARY
KEY
NONCLUSTERED
(
[字段名1],
[字段名2]
)
GO
方法三:建表后,右键--设计,选中作为符合主键的列,选中之后右击--设为主键