當前位置:首頁 » 編程語言 » sql自增長列

sql自增長列

發布時間: 2022-06-28 23:09:29

A. sql server中把一列改為自增長的語句怎麼寫

sql
server
中普通欄位修改為自增欄位時,如圖:
把否修改為是:
按ctrl+S時報:
這時應:
去掉對勾
確定。
回到設計表中再次按ctrl+s保存欄位自增。

B. SQL 程序如何獲取自增表中的自增列的值

假設表結構如下:

CREATE TABLE TestTable

(

id int identity,

CreatedDate datetime

)

SQL2005獲得新增行的自動增長列的語句如下:

insert into TestTable (CreatedDate) output inserted.id values (getdate())

output 是sql server2005的新特性,可以從數據修改語句中返回輸出,可以看作是「返回結果的DML」

2005之後 Insert,Delete,Update語句 均支持Output語句。

在Output語句中可以引用inserted和deleted。使用方法同觸發器類似。

該方法最大弊端就是需要指定主鍵。output Inserted.要返回的值。

帶有output的insert語句.

@@identity只能返回當前會話最後生產的標識列. 如果一次性插入多條語句的話. 需要返回這些自動生產的標識列. 那麼outpu就派上用場了.

declare @temp table(k int, v nvarchar(200))
insert into t1(datacol)
output inserted.keycol, inserted.datacol
into @temp
select lastname from TSQLFundamentals2008.hr.Employees where country='uk'

select * from @temp

帶有output的delete語句和update語句也大同小異.

delete語句能操作deleted臨時表. 而update的本質是delete和insert一次能操作inserted和updated兩張表.

帶有output的merge子句.

在merge子句的output輸出中可以調用@action函數. 會返回一個代表相應操作的字元串(insert, update, delete)

SQL2000獲得新增行的自動增長列的語句如下:

insert into TestTable (CreatedDate) values (getdate())

select @@IDENTITY

用select @@identity得到上一次插入記錄時自動產生的ID

如果你使用存儲過程的話,將非常簡單,代碼如下:SET @NewID=@@IDENTITY

@@identity使用注意事項:


我們要慎用@@IDENTITY,原因是 @@IDENTITY 它總是獲取最後一條變更數據的自增欄位的值,
而忽略了進行變更操作所在的范圍約束。比如,我有表 A 和表 B 兩個表,現在我在表 A 上定義了一個Insert觸發器,當在表 A 中插入一條數據時,自動在表 B 也插入一條數據。此時,大家注意,有兩個原子操作:在A中插入一條數據, 接著在B中隨後插入一條數據。

現在我們想下,假設上面表 A 和表 B 都有IDENTITY自增域,那麼我們在表 A 插入一條數據後,使用了 SELECT @@IDENTITY 輸出時,輸出的到底是 A 還是 B 的自增域的值呢? 答案很明顯,是誰最後插入就輸出誰,那麼就是 B 了。於是,我本意是想得到 A 的自增域值,結果得到了 B 的自增域值,一隻 BUG 隨之誕生,搞不好還會影響到整個系統數據的混亂。

因此,對於這種情況,建議大家慎用 @@IDENTITY,而盡量採用SCOPE_IDENTITY()函數替換之。SCOPE_IDENTITY() 也是得到最後一條自增域的值,但是它是僅限在一個操作范圍之內,而不@@IDENTITY 是取全局操作的最後一步操作所產生的自增域的值的。

SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何錶內所生成的最後一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中的值;@@IDENTITY 不受限於特定的作用域。

在C#中使用ExecuteScalar()方法獲得第一行第一列的值(即自增id):

object val = cmd.ExecuteScalar();

C. SQL2008添加自動增長列

因為你現在列num裡面已經有數據,所以自動增長可能比較困難
可以增加一列,然後設定自動增長
alter
table
acc
add
column
id
int
identity

D. 如何用sql語言創建自動增長的列

CREATE
TABLE
[表名]
(
[AUTOID]
[int]
IDENTITY
(1,
1)
NOT
NULL
,
[列名]
[varchar]
(50)
COLLATE
Chinese_PRC_CI_AS
NULL
)
ON
[PRIMARY]
GO
能看明白嗎?[AUTOID]
[int]
IDENTITY
(1,
1)
NOT
NULL
就是自動增長的欄位,自動加1.

E. sql sever中如何將一列修改為自增長列

原來有個表news,id是主鍵,但不是非主鍵,現在需要將其修改為主鍵,方法如下:
對原有的id列是無法直接將其修改為主鍵的,必須間接地來實現,具體如下:
首先增加一個新列並定義為自增長列alter table news add id1 int Identity(1,1) not null
然後再資源管理器中右擊news表,選擇修改,將id列刪除,並將id1修改為id即可,當然這個過程也可以通過sql語句來實現

F. sql中自增長類型怎麼設置

可以用identity(1,1)是指從1開始,每次增加1.如果每次想增加2就是
建表時指定某列為自增長列
create
bable
[表名]
([列名1]
int
itentity(1,1),[列名2]........)

G. sql server建表時怎麼設置ID欄位自增

一、打開要設置的資料庫表,點擊要設置的欄位,比如id,這時下方會出現id的列屬性表。

H. sql server中如何實現自增欄位

1、主鍵自增,以及建表的語句如下:

CREATE TABLEIF NOT EXISTS `t_email_notice` (

`id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,`send_time` INT (16) NOT NULL DEFAULT '0',PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

其中 `id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,這句話表示設置id欄位字增,類型為int

2、varchar類型的主鍵,不會自增。但是你可以通過創建觸發器的形式,來實現自增。代碼如下:

CREATE TRIGGER `T` BEFORE INSERT ON `user`FOR EACH ROW begin

set new.id=concat('SH',lpad(((SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1))+1),4,0));

end;

這段語句的意思是,當user表中新插入一條一條語句,會觸發『觸發器T』將以』SH『開頭的id欄位自增+1。

(8)sql自增長列擴展閱讀

sql語句建表規則如下:

create table 『表名』 (『欄位1』 type1 [not null] [primary key] identity(起始值,遞增量),『欄位2』type2 [not null], ...)--primary key為主鍵 identity表示遞增數量。

I. 在SqlServer中怎樣設置自動增長欄位

sqlserver有3種方式設置自增列,
1.
ssms中在圖形化界面中建表時,設置自動增長的其實值及每次增量
2.
--語句建表時設置自增列,從1開始增長,每次增加1
create
table
test(col1
int
indentity(1,1,))
3.
--修改列為從1開始增長,每次增加10
alter
table
test
alter
col1
int
indentity(1,10)

熱點內容
我的世界伺服器咋開外掛 發布:2024-03-29 01:07:45 瀏覽:454
sql寫報表 發布:2024-03-29 01:03:23 瀏覽:304
家用伺服器怎麼選 發布:2024-03-29 00:49:18 瀏覽:400
Ap6510dn如何配置 發布:2024-03-29 00:38:47 瀏覽:332
安卓和蘋果哪個更佔用內存 發布:2024-03-29 00:37:02 瀏覽:423
編譯錯誤算bug嗎 發布:2024-03-29 00:23:03 瀏覽:33
c語言干什麼 發布:2024-03-29 00:05:35 瀏覽:314
香港中轉伺服器搭建 發布:2024-03-29 00:05:16 瀏覽:673
安卓手機怎麼在桌面上顯示鍾表 發布:2024-03-28 23:48:22 瀏覽:5
分析代碼能編譯嗎 發布:2024-03-28 23:48:16 瀏覽:767