2012-07-05 132 views
0

我有兩個表 1.blogalbum在數據單項它是刪除並更新照片

Id AlbumName CoverPhoto   CreatedDate     Description  
1 Onam  noImage.jpg  2012-07-05 10:54:46.977   Onam is an ancient festival which still survives in modern times. Kerala's rice harvest festival and the Festival of Rain Flowers, which fall on the Malayalam month of Chingam, celebrates the Asura King Mahabali's annual visit from Patala (the underworld). Onam is unique since Mahabali has been revered by the people of Kerala since prehistory. According to the legend, Kerala witnessed its golden era during the reign of King Mahabali. The Brahma-Vaivarta Puranam explains that Lord Vishnu wante  
2 Birds  noImage.jpg  2012-07-05 11:02:48.667   
3 Nature gold-fish.jpg  2012-07-05 11:03:36.503 

2.blogphoto在數據單項它是

Id AlbumId PhotoName     AddedDate    
    29 1 Photo0364.jpg  2012-07-05 11:01:18.270   
    30 1 Photo0380.jpg  2012-07-05 11:01:35.723   
    31 1 Photo0404.jpg  2012-07-05 11:01:47.717   
    32 1 Photo0404.jpg  2012-07-05 11:02:34.457   
    33 2 f.jpg    2012-07-05 11:03:03.300   
    34 2 g.jpg    2012-07-05 11:03:12.917   
    35 3 image005.jpg  2012-07-05 11:03:45.367   
    36 3 1.jpg    2012-07-05 11:03:57.837   
    37 3 2.jpg    2012-07-05 11:04:05.580   
    38 3 na.jpg    2012-07-05 11:04:17.337   
    39 3 gold-fish.jpg  2012-07-05 11:06:29.453 

這裏從上面的表時我從第二張桌子上刪除任何照片,名字與第二張桌子上的光子名稱相同的第一張桌子上的照片coverphoto必須替換爲圖片noImage.jpg。請幫我解決這個問題。

回答

3

我會建議更新您的數據庫模式。

而不是表1中的封面照片字段,添加BlogPhotId,與表2的外鍵關係。然後,您可以配置它,以便從表2中刪除照片時,表1中的值設置爲空值。

然後在應用程序邏輯,顯示noImage.jpg其中BlogPhotoId在表1

的查詢做了更新,不修正的模式將類似於空:

SELECT @AlbumId = Album, @PhotoName = PhotoName FROM BlogPhoto WHERE Id = @Id 
DELETE FROM BlogPhoto WHERE Id = @Id 
UPDATE BlogAlbum SET CoverPhoto = 'noImage.jpg' WHERE AlbumId = @AlbumId AND PhotoName = @PhotoName 

相反在這樣的一組查詢中,您還可以考慮使用觸發器,並查看已刪除的行。

+0

Mr. James Osborn您的查詢符合我的要求。感謝那。 – Ramdas

+0

當然,我也嘗試你的建議。 Thankyou非常幫助我。 – Ramdas

0

我同意詹姆斯更新你的模式或只是設置一個觸發器。 無論如何,一個簡單而簡單的方法就是在刪除後更新第一個表格,替換已刪除的圖片。

UPDATE blogalbum 
SET CoverPhoto = 'noImage.jpg' 
WHERE CoverPhoto = 'yourDeletedPicture.jpg'