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
條記錄已選擇。