0

私は2つのテーブルを持っています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

上記の表から、2番目の表から写真を削除すると、2番目の表の写真名と同じ名前の1番目の表のフィールドcoverphotoを画像noImage.jpgに置き換える必要があります。これを解決するのを手伝ってください。

4

2 に答える 2

3

データベーススキーマを更新することをお勧めします。

表1のカバー写真フィールドの代わりに、外部キー関係を持つBlogPhotIdを表2に追加します。次に、写真が表2から削除されたときに、表1の値がnullに設定されるように構成できます。

次に、アプリケーションロジックで、表1のBlogPhotoIdがnullであるnoImage.jpgを表示します。

スキーマを修正せずに更新を行うクエリは、次のようになります。

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

このような一連のクエリの代わりに、トリガーを使用して、削除された行を確認することも検討できます。

于 2012-07-05T08:51:55.877 に答える
0

Jamesがスキーマを更新するか、トリガーを設定することに同意します。とにかく、シンプルで簡単な方法は、削除した画像を置き換えて、削除後に最初のテーブルを更新することです。

UPDATE blogalbum
SET CoverPhoto = 'noImage.jpg'
WHERE CoverPhoto = 'yourDeletedPicture.jpg'
于 2012-07-05T09:17:52.230 に答える