2012-05-31 16 views
0

我試圖驗證數據是否存在於單個事務中的兩個不同表中。單次交易的原因是數據庫每天大約有1-300萬次的衝擊,因此增加1個額外的交易將使該數量增加到900萬,並且我可憐的小型服務器需要中斷:)驗證單個SQL事務中不同表中存在兩列

所以我需要檢查,如果在表X和數據表Y存在的ID,並將結果返回到我的VB.net腳本,這樣我可以處理結果理想情況下像這樣的工作

if exists (select id from X where id = @id) 
print 'True,' else print 'False,' 
if exists (select id from Y where id = @id) 
print 'True' else print 'False' 

這給了我「真,真「如果兩者都存在或者」True,False「等等......但是它只顯示在SQL打印中,而不是實際上將它作爲對象/字符串或數組值返回,我可以使用它們。

我對這種性質的任何解決方案都是開放的,可以給我兩個單一事務的結果,以及如何處理vb中的響應。感謝

回答

2
SELECT 
    Case When EXISTS(SELECT 1 FROM X WHERE id = @id) Then 1 Else 0 End AS IsInX, 
    Case When EXISTS(SELECT 1 FROM Y WHERE id = @id) Then 1 Else 0 End AS IsInY 
1
select (select COUNT(*) from X where id = @id) AS x_exists, 
     (select COUNT(*) from Y where id = @id) AS y_exists 

這將返回具有兩個字段的一個數據行,每個都包含任一01(或更多,如果id不是唯一的)。

0
CREATE PROCEDURE CheckIDOnTables(@ID int) 
AS 
BEGIN 
DECLARE @X AS NVARCHAR(10) 
DECLARE @Y AS NVARCHAR(10) 
Set @X = 'False' 
Set @Y = 'False' 
if exists (select id from TableX where id = @ID) 
    Set @X = 'True' 
if exists (select id from TableY where id = @ID) 
    Set @Y = 'True' 
SELECT @X AS XExists, @Y AS YEsists 
END 

它會給你你想要的結果。

相關問題