2014-01-21 83 views
0

我們可以在SQL Server 2008中創建像下面的例子一樣的存儲過程嗎?我們可以根據MS SQL 2008中的日期更改創建任何存儲過程標識更改嗎?

我有一個表:

CREATE TABLE Employee 
(
    ID int IDENTITY(1,1) PRIMARY KEY, 
    LastName varchar(50) NOT NULL, 
    FirstName varchar(50) 
) 

在這裏,如果我插入上22/01/2014任何數據然後ID自動地被1

像遞增,我已經插入的數據等

員工

1 Hank Kent 
2 Kent Hank 

但我看,如果系統da te然後第二天那個身份再次從1開始增加。

Ex。上23/01/2014如果插入任何數據,那麼應該看起來像

上表值和

1 John Bat 
2 Debbi Meera 
+0

你需要爲一個[觸發](http://msdn.microsoft.com/en-us/library/ms189799.aspx),我想。它不會是身份字段;身份字段是「不重複的」,您的計劃將創建重複。 –

+2

你不能用你當前的表格做到這一點。主鍵必須是唯一的。 – JodyT

回答

0

不,你不能在ID列重複的值,因爲它是你的主鍵。但是,您可以將邏輯構建到觸發器或其他約束中,以設置其他字段(可能稱爲DailyInsertOrder),該字段在插入時自行更新。

例如,你可以創建一個調用UDF函數來查找內容「處的」記錄是插入DailyInsertOrder默認約束。這也需要您保存創建記錄的日期,可能是在datetime2 CreatedDate字段中。現在,您將業務邏輯嵌入您的表格模式中,並且在我看來,這是一個不好的做法。

取而代之的,只需要一個CreateDate字段,該字段的默認值爲SYSDATETIME()或設置了INSERT觸發器。然後,您可以使用CAST(CreateDate as date)的排名SELECT聲明進行查詢。

如果沒有意義,我可以進一步解釋。

0

按給定的情景我想通過硬編碼它是更好的方式做的話,我已經在Java語言做了。

相關問題