"RENTED"と "HISTORY"という2つのテーブルがあります。アイテムが返されたら、プロシージャを使用して「ヒストリ」テーブルに移動する必要があります。テーブルはすべての点で同じです。主キーは単なる数字ですが、自動インクリメントされません。賃貸から履歴に行を移動しようとすると、プライマリキーのID番号が2であるため、競合が発生します。私はちょうどヒストリテーブルの主キーの最大値を見つける必要があることを知って、その後、行を追加します。簡単だと思ってしまい、やりにくくなった。最後に、RENTEDテーブルから行を削除します。これは実行できます。行の動きを助けてください。ありがとう!SQLは、自動インクリメントなしで同じテーブルに行を移動します(SQL Server 2008)
また、私はここにいくつかの他の同様のコードサンプル/回答を見て、しかしかなりまだ解決策を見つけることができませんでした。
Create Procedure spMoveToHistory
@RENTED_OUT_NUM bigint
AS
Begin
Insert Into HISTORY
Select *
From RENTED_OUT
Where RENTED_OUT_NUM = @RENTED_OUT_NUM
Select @RENTED_OUT_NUM = (MAX(HISTORY_NUM)+1)
From HISTORY
Delete From RENTED
Where RENTED_OUT_NUM = @RENTED_OUT_NUM
End
だから、この手順では、私はちょうど番号2を入力し、借りたテーブルで2番目のレコードを取得し、履歴テーブルの使用可能な次の行に上に移動します。そのため、プライマリキーHISTORY
テーブルのHISTORY_NUM
列に挿入し、RENTED
テーブルのRENTED_OUT_ID
列の反復値を取ることができないながら
**RENTED TABLE:**
RENTED_OUT_ID (PK) | ITEM_NAME | ITEM_DESC | DATE_RENTED | DATE_RETURNED
1 data data data data
2 move this data data data data
3 data data data data
**HISTORY TABLE:**
HISTORY_NUM (PK) | ITEM_NAME | ITEM_DESC | DATE_RENTED | DATE_RETURNED
1 data data data data
2 data data data data
-> INSERT HERE
あなたが履歴テーブルにHISTORY_NUM列を維持している場合には、主キー –
として、主キーとして機能し、主キー属性を削除します履歴テーブルに新しい自動インクリメント列を作成できません:構文は次のだろうHISTORY_NUM列から –
@ mudassirhasanそれは正しいとは言えません。私がしなければならないのは、MAX(HISTORY_NUM)を見つけて1ずつ増やしてから、その行にデータを置くだけです。 – FoxDonut