2013-10-07 93 views
2

我有以下作業表,其中作業將每28天旋轉一次。使用存儲過程更新,然後插入同一表

添加新客戶後,我將首先手動創建一個作業。

我想將完整列更新爲true,並將新記錄插入到同一張表中,新作業僅指定完全相同的詳細信息,並將新的日期(28天后)與Complete和Paid值一起指定爲假。

我嘗試使用FOR UPDATE觸發器失敗,寧願使用存儲過程。

這怎麼辦?

CREATE TABLE [dbo].[Jobs](
    [JobID] [int] IDENTITY(1,1) NOT NULL, 
    [CustomerID] [int] NOT NULL, 
    [JobDate] [date] NOT NULL, 
    [Price] [decimal](7, 2) NOT NULL, 
    [Complete] [bit] NOT NULL, 
    [Paid] [bit] NOT NULL, 
CONSTRAINT [PK_Jobs] PRIMARY KEY CLUSTERED 
CONSTRAINT [FK_CustomerID] FOREIGN KEY([CustomerID]) 
REFERENCES [dbo].[Customer] ([CustomerId]) 

回答

2

試試這個更新現有的記錄,並基於它創建一個新問題:

CREATE PROC MyProc 

@CustomerID int 

AS 

DECLARE @JobID int; 
SELECT TOP 1 @JobID = JobID 
FROM Jobs WHERE CustomerID = @CustomerID AND Complete = 0 
ORDER BY JobDate DESC; 

UPDATE Jobs 
SET Complete = 1 
WHERE JobID = @JobID; 

INSERT Jobs(CustomerID, JobDate, Price, Complete, Paid) 
    SELECT CustomerID, DATEADD(m,1,JobDate), Price, 0, 0 
    FROM Jobs WHERE JobID = @JobID; 
+0

p.campbell這是鮑勃。感謝您抽出時間,非常感謝。 –

+1

@AlistairMorris非常歡迎!此外,冒着投票飢渴的風險,你應該提供幫助以及綠色複選標記的答案:)這是StackOverflow的信譽系統。它有助於他人判斷質量的答案和問題。 –

相關問題