當前位置:首頁 » 編程語言 » sql生成單號
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql生成單號

發布時間: 2022-05-12 21:10:32

存儲過程是怎麼生成單號的

通常我會用最簡單的辦法:利用sql資料庫的自增ID。
如果是存儲過程裡面,那麼先insert語句增加記錄(不寫單號或隨便給一個),然後用update語句,利用自增id(insert會自動生成,並且絕對不重復)和日期拼接一個字元串,這樣就可以了。這里有個需要注意的,如果你沒有其它的唯一標識,那麼需要使用事務,將insert和update在一個事務裡面完成(begin trans/end trans),這樣取order by id desc的top1就可以了,否則可能取錯。或者用where 單號='預設無效值' 也是可以的,對應更新ID,無論幾條記錄。
以上是簡單辦法,如果一定要一個語句會比較復雜,會用到游標或者行號,實際的效率也不高,因此,如果在存儲過程中,那麼這個方法是最靠譜的。

② SQL資料庫列自動生成編號

兩種方法:

1、用Truncate

TRUNCATETABLEname可以刪除表內所有值並重置標識值

2、用DBCC CHECKIDENT

DBCCCHECKIDENT('table_name',RESEED,new_reseed_value)如dbcc checkident ("bc_pos",reseed,1)即可,

但如果表內有數據,則重設的值如果小於最大值可能會有問題,這時可以用 dbcc checkident("bc_pos",reseed)即可自動重設值。

注意:

只能為不允許空值且數據類型為 decimal、int、numeric、smallint、bigint 或 tinyint 的列設置標識屬性。此外,不能為主鍵列設置標識屬性。

(2)sql生成單號擴展閱讀:

關於上述標識列的引用

如果在SQL語句中引用標識列,可用關鍵字IDENTITYCOL代替,例如,若要查詢上例中ID等於1的行,

以下兩條查詢語句是等價的:

1、SELECT * FROM T_test WHERE IDENTITYCOL=1

2、SELECT * FROM T_test WHERE

③ 利用"SQL"語句自動生成序號的方式

1.select row_number() over (order by name) as rowid, sysobjects.[name] from sysobjects

2.select id=IDENTITY(int,1,1), sysobjects.[name] as name into dbo.Test_Table from sysobjects

④ 使用Microsoft SQL Server 2000 資料庫,使用存儲過程或者其它辦法使生成的單號不重復

所有生成主鍵編號(非自動編號)的存儲行為都是在保存時完成的,這樣才能有效的防止並發,如果交給軟體或者網站處理,是不能採用增長型數據的。

如你需要保存的主鍵數據在保存時+1,,這個過程是不能由軟體操作的,比如設置一個自定義函數,將程序的Insert語句中主鍵部分的@Parameter改成dbo.gettableID(),這樣你保存時就不會有被佔有的情況,同時保存時要考慮該函數的返回值,以便程序調用。

@Parameter為假定你的程序主鍵值
dbo.gettableID()為假定你的自定義函數。

⑤ 如何創建一個存儲過程中的訂單號自動生成

SQL server中可以用sequence來實現訂單號的自動生成。例如創建如下序列:
create sequence orderSeq
as bigint --數據類型
start with 100000 --開始值
increment by 1 --增量
minvalue 1 --最小值
maxvalue 1000000--最大值
no cycle --不循環
cache 3 --設置cache大小為3
這樣訂單號就會從100000開始每次自增1生成。

⑥ sql存儲過程根據編碼規則生成編號

由於題設的要求不全,這里假設record為單據表,id為編號欄位,最大長度20,其中流水號長度最大為5位
create proc GenerateID
@const varchar(10), --@const作為規則變數的常數
@para char(1), --@para作為規則變數的參數
@date varchar(10), --@date作為規則變數的日期
@idLen int --@idLen作為規則變數的流水號長度
@Id varchar(20) output --@輸出id作為生成的編碼
AS
if @idLen>5
begin
print('流水號長度超過5位')
return
end
declare @maxId varchar(20), @iMaxId int, @lsh varchar(5),@cIdLen char(1)
--獲取最大單號
select @maxid=right(convert(varchar(20),max(id)),5) from record
set @iMaxId=convert(int,@maxid)
set @iMaxId=@iMaxId+1
set @cIdLen=convert(char(1),@idLen)
--生成預定長度的流水號
exec('set @lsh=right(convert(varchar(5),@iMaxid),'+@cIdLen+')')
--生成編碼
set @id=@const+@para+@date+@lsh

⑦ sqlserver中資料庫計劃單號;該如何實現例如CG1312001

不需要用存儲過程
x列實際上就是自增列,如果你是通過企業管理器建表,只需要把x列的「標識」選為是就可以了;如果是通過sql建表,示例為:[x] [int] IDENTITY (1, 1) NOT NULL
y列就是你要的計劃單號,通過設置默認值可以完成,實際操作時,不需要對該列寫數據,它是自動生成單號的。當然,你也可以不用設置默認值,而把該列設置為公式列,也是可以自動生成的,但實際運用中限制比較多

⑧ SQL 資料庫中如何自動生成訂單號

SQL server中可以用sequence來實現訂單號的自動生成。
例如創建如下序列:
create sequence orderSeq
as bigint --數據類型
start with 100000 --開始值
increment by 1 --增量
minvalue 1 --最小值
maxvalue 1000000--最大值
no cycle --不循環
cache 3 --設置cache大小為3
這樣訂單號就會從100000開始每次自增1生成。

⑨ sql怎麼為表的訂單號列自動生成訂單號

建表的時候可以指定訂單默認唯一值,比如guid,或者用觸發器自動生成訂單號