sql返回主键
⑴ sql语句怎么查询表的主键
1、打开【SQL Server Management Studio】管理工具,连接数据库。
⑵ db2中插入数据后直接返回主键(子增列 id)的sql怎么写
你按模式名、表名为条件查找系统表SYSCAT.COLIDENTATTRIBUTES,列NEXTCACHEFIRSTVALUE就是IDENTITY的下一个值,理想得来说这个值减1就是你当前的主键值(假如多个用户在操作这个表这种查法可能不对)。
使用这个表查ID的时候,IDENTITY的CACHE必须为NONE。
⑶ mysql 插入数据后返回主键
你可以看看这里,大致有三种办法:
#方法一是使用last_insert_id
SELECTLAST_INSERT_ID();
#方法二是使用max(id),但是不适用高并发环境下。
方法三是创建一个存储过程,在存储过程中调用先插入再获取最大值的操作
#方法四使用@@identity
select@@IDENTITY
#基本MySQL的学习,可以学习这里。使用MariaDB数据库管理系统。linuxprobe.com/chapter-18.html
#出处:
⑷ JAVA中用什么方法向SQL server2005中插入一条数据并返回他的主键值
(最基本的连接方法)
1。获取连接
获取连接需要两步,
一是使用DriverManager来注册驱动(Class.forName(“com.mysql.jdbc.Driver”)),二是使用DriverManager来获取Connection对像DriverManager.getConnection(url,username,password)
2.获取Statement(Statement stmt =con.createStatement();)
Statement就是执行sql语句的;
3.执行sql语句
String sql = “insertinto user value(’zhangSan’, ’123’)”;
int m =stmt.executeUpdate(sql);
//总代码如下
publicstatic Connection getConnection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb1";
return DriverManager.getConnection(url, "root", "123");
}
@Test
publicvoid insert() throws Exception {
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "insert into user values('zhangSan', '123')";
stmt.executeUpdate(sql);
System.out.println("插入成功!");
}
⑸ db2中插入数据后直接返回主键(自增列id)的sql怎么写
db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity,
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => );
DB20000I SQL 命令成功完成。
db2 => INSERT INTO test_create_tab2(val) VALUES ('NO id');
DB20000I SQL 命令成功完成。
这里和 SQL Server 一样,大家都不能手动指定那个 自增id 的数值
db2 => INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0798N 不能为定义为 GENERATED ALWAYS 的列 "ID" 指定值。 SQLSTATE=428C9
这里和 SQL Server 不一样,SQL Server 会自动排除掉那个自动递增的列
db2 => INSERT INTO test_create_tab2 VALUES ('Is Auto ?');
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0117N 赋值数目与指定的或隐含的列数或变量数不一样。 SQLSTATE=42802
关于 初始数值的设定。
db2 => drop TABLE test_create_tab2;
DB20000I SQL 命令成功完成。
db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity
db2 (cont.) => (Start With 100
db2 (cont.) => Increment by 1
db2 (cont.) => minvalue 100
db2 (cont.) => maxvalue 999999999
db2 (cont.) => no cycle cache 5 no order),
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => );
DB20000I SQL 命令成功完成。
db2 => INSERT INTO test_create_tab2(val) VALUES ('NO id');
DB20000I SQL 命令成功完成。
db2 => select * from test_create_tab2;
ID VAL
----------- ----------
100 NO id
1 条记录已选择。
db2 => select identity_val_local() from SYSIBM.SYSDUMMY1;
1
---------------------------------
100.
1 条记录已选择。
⑹ 想返回主键值,但sql语句一直报错,不知道为什么,是在MySql环境使用的,求大神帮助!
MySql环境, 获取最新创建的 主键值.
不是使用 select @@identity 呀.
这个 select @@identity, 是 SQL Server 数据库用的。
mysql 是使用另外一个函数, 下面是例子:
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
⑺ C#与Sql 2000中Insert 时候返回主键
你的主键是 标识列吧
1:如果插入成功 就 返回 @@identity 最后插入的标识值
即:用一个 查找select @@indentity 或print @@indetity 返回这个值
2:如果不懂 这样也可以, 标识列是递增的
所以你最后插入的主键值 最大,
可以查找最大的标识值
select max(id) from tab
⑻ db2中插入数据后直接返回主键(自增列id)的sql怎么写
db2
=>
CREATE
TABLE
test_create_tab2
(
db2
(cont.)
=>
id
INT
NOT
NULL
PRIMARY
KEY
generated
always
as
identity,
db2
(cont.)
=>
val
VARCHAR(10)
db2
(cont.)
=>
);
DB20000I
SQL
命令成功完成。
db2
=>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id');
DB20000I
SQL
命令成功完成。
这里和
SQL
Server
一样,大家都不能手动指定那个
自增id
的数值
db2
=>
INSERT
INTO
test_create_tab2(id,
val)
VALUES
(1,
'id
no
use');
DB21034E
该命令被当作
SQL
语句来处理,因为它是无效的“命令行处理器”命令。在
SQL
处理期间,它返回:
SQL0798N
不能为定义为
GENERATED
ALWAYS
的列
"ID"
指定值。
SQLSTATE=428C9
这里和
SQL
Server
不一样,SQL
Server
会自动排除掉那个自动递增的列
db2
=>
INSERT
INTO
test_create_tab2
VALUES
('Is
Auto
?');
DB21034E
该命令被当作
SQL
语句来处理,因为它是无效的“命令行处理器”命令。在
SQL
处理期间,它返回:
SQL0117N
赋值数目与指定的或隐含的列数或变量数不一样。
SQLSTATE=42802
关于
初始数值的设定。
db2
=>
drop
TABLE
test_create_tab2;
DB20000I
SQL
命令成功完成。
db2
=>
CREATE
TABLE
test_create_tab2
(
db2
(cont.)
=>
id
INT
NOT
NULL
PRIMARY
KEY
generated
always
as
identity
db2
(cont.)
=>
(Start
With
100
db2
(cont.)
=>
Increment
by
1
db2
(cont.)
=>
minvalue
100
db2
(cont.)
=>
maxvalue
999999999
db2
(cont.)
=>
no
cycle
cache
5
no
order),
db2
(cont.)
=>
val
VARCHAR(10)
db2
(cont.)
=>
);
DB20000I
SQL
命令成功完成。
db2
=>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id');
DB20000I
SQL
命令成功完成。
db2
=>
select
*
from
test_create_tab2;
ID
VAL
-----------
----------
100
NO
id
1
条记录已选择。
db2
=>
select
identity_val_local()
from
SYSIBM.SYSDUMMY1;
1
---------------------------------
100.
1
条记录已选择。