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

从上面的表格中,当我从第二个表格中删除任何照片时,第一个表格中与第二个表格中的照片名称相同的字段封面照片必须替换为图像 noImage.jpg。请帮我解决这个问题。

4

2 回答 2

3

我建议更新您的数据库架构。

代替表一中的封面照片字段,添加与表 2 具有外键关系的 BlogPhotId。然后您可以对其进行配置,以便当从表 2 中删除照片时,将表 1 中的值设置为 null。

然后在应用程序逻辑中,显示表 1 中 BlogPhotoId 为空的 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 回答