2012-07-30 85 views
1

大家好我是新來的功能,所以我有在這裏有點開始麻煩如何使用函數編寫存儲過程?

我有兩個表這樣

錯誤

BugID|Title|ProjectName|CreatedBy 

BugHistory

BughistoryID|BugID|Assignedto|ToStatus|FromStatus 

我想寫一個插入存儲過程ure爲Bugs表,其中我將[Title]|[ProjectName][CreatedBy]插入到bugs表中,並且BugID具有標識和主鍵。

之後,我必須將新標題的BugIDTostatus插入BugHistory表中。這兩個步驟應該在單個存儲過程中完成。

我想要一個select語句,我必須顯示[AssignedTo][Tostatus]表中的BugHistory表的gridview中的錯誤表。我怎樣才能使用這兩個過程的任何想法的功能?

+0

@Ic我使用聯接嘗試了存儲過程的InsertLogic但事與願違因爲外鍵約束而工作...... – SoftwareNerd 2012-07-30 04:44:31

+0

不推薦使用「身份」作爲外鍵。然而,嘗試從[這裏](http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=108333) – bjan 2012-07-30 04:49:14

+0

的解決方案這是一個** STORED **過程,*存儲*在您的SQL Server(無關)與一個「商店」) – 2012-07-30 04:54:02

回答

0

嘗試是這樣的:

-- create stored procedure to insert a new bug, with parameters 
CREATE PROCEDURE dbo.InsertBug 
    @Title VARCHAR(100), 
    @ProjectName VARCHAR(100), 
    @CreatedBy VARCHAR(100) 
AS BEGIN 

    -- variable to hold newly inserted "BugID"  
    DECLARE @NewBugID INT 

    -- do the insert into the "Bugs" table  
    INSERT INTO dbo.Bugs(Title, ProjectName, CreatedBy) 
    VALUES(@Title, @ProjectName, @CreatedBy) 

    -- get the new BugID that's been assigned during INSERT  
    SELECT @NewBugID = SCOPE_IDENTITY() 

    -- insert into the BugHistory table - since you didn't specify anything, 
    -- I assumed the bug gets assigned to whoever created it by default, 
    -- and I assumed "ToStatus" is a string column so I assigned "New" to it 
    -- ADAPT as needed ! 
    INSERT INTO dbo.BUgHistory(BugID, AssignedTo, ToStatus) 
    VALUES(@NewBugID, @CreatedBy, 'New') 
END 
+0

只是爲了清除自己,雖然我已經測試了'SCOPE_IDENTITY'四個不同的執行,它工作正常,如果另一個插入語句執行之間'INSERT INTO dbo.Bugs(...'和'SELECT @NewBugID = SCOPE_IDENTITY()',SCOPE_IDENTITY()會返回正確的值嗎?這個過程可以有太多的並行執行嗎? – bjan 2012-07-30 05:25:39

+0

@bjan:'SCOPE_IDENTITY'返回插入的最後一個IDENTITY值所以如果在檢查SCOPE_IDENTITY之前你有另外一個INSERT,它取決於這個插入是否也會進入一個IDENTITY列的表中 - 如果是的話,你會得到*那個IDENTITY值,使用SCOPE_IDENTITY * *在你感興趣的INSERT之後,你應該沒問題。 – 2012-07-30 05:42:57

+0

done ty it works @marc_s – SoftwareNerd 2012-07-30 05:58:44

0

嘗試建立在你的錯誤觸發在你插入數據BugsHistory AFTER INSERT

相關問題