對不起,我還沒有拿出一個更好的一個呢。插入多個基於對方的值的記錄
我目前正在優化一個基本上可以完成數千個選擇和插入的工具。
假設下面的關係
class A
{
public long ID; // This is an automatic key by the sqlserver
...Some other values
}
class B
{
public long RefID // Reference to A.ID;
... some other values...
}
class C
{
public long RefID // Reference to A.ID;
... some other values
}
目前正在發生什麼是一個選擇,以獲得對象A, 如果它不存在,創建一個新的。該查詢返回
然後選擇(插入如果不是existant)的對象ID(OUTPUT INSERTED.ID)B和C.
是否有辦法來壓縮成一個單一的SQL語句呢?
Im在自動生成對象A的部分發生掙扎。
所以它必須做這樣的事情:
IF NOT EXISTS(SELECT * FROM TableA WHERE someConditions)
INSERT... and get the ID
ELSE
REMEMBER THE ID?
IF NOT EXISTS(SELECT * FROM TableB WERE RefID = ourRememberedID)
INSERT...
IF NOT EXISTS(SELECT * FROM TableC WERE RefID = ourRememberedID)
INSERT...
請注意,不能使用存儲過程。
您可以使用一個完成所有操作的過程,然後調用該過程傳遞所需的任何值,並在一次調用中執行該邏輯。 –
不幸的是,在這種環境下,存儲過程是沒有選擇的... – CSharpie
存儲過程不是一個選項嗎? 2014年? –