2013-10-05 103 views
0

不起作用在SQL Server中,當我執行這兩個命令一起插入遵循刪除SQL服務器

INSERT INTO TABLEB SELECT * FROM TABLEC WHERE TABLEC.COLUMNC = 'ABC' 
    DELETE TABLEC where TABLEC.columnC = 'ABC' 

我只得到了刪除的結果。插入確實會返回一條消息,說x行受到影響,但表中的內容仍爲空。

實際代碼

INSERT INTO STORECODE_BK SELECT * FROM STORE WHERE STOREID = '334' 
    DELETE STORE where STOREID = '334' 
+0

如果執行'INSERT INTO TABLEB'然後'選擇從TABLEB'然後'DELETE TABLEF'然後'什麼從TABLEB'再次選擇?結果是什麼? – geomagas

+0

我不能,因爲如果我從tableC刪除沒有值可以添加到TableB – user1761160

+0

您是否設置列值?你能發佈你的真實代碼嗎? –

回答

0

嘗試以下。

INSERT INTO STORECODE_BK SELECT * FROM STORE WHERE STOREID = '334' 
GO 
DELETE FROM STORE where STOREID = '334' 
GO 
+0

P.S.如果這將是一個已執行的存儲過程,那麼您將希望專門選擇列而不是使用*,因爲這依賴於具有相同順序的相同列且具有危險性的兩個表。 – Dijkgraaf

+0

那麼如果是GO的話就不得不出來了。它們是查詢工具的指令,而不是SQL。 –

0

選擇到一個臨時表。

然後用它來插入到表B,也許從表C

刪除

然後從臨時表中選擇。

不得不說,你不得不跳過所有的箍表示一個不到偉大的設計。

1

geomagas已經得到解決 是由於ON DELETE CASCADE屬性,它刪除相關的PK 感謝