删除和更新照片

时间:2012-07-05 08:26:58

标签: sql-server-2008 sql-server-2008-r2

我有两张桌子 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。请帮我解决这个问题。

2 个答案:

答案 0 :(得分: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

您可以考虑使用触发器并查看已删除的行,而不是像这样的一组查询。

答案 1 :(得分:0)

我同意James更新您的架构或只是设置触发器。 无论如何,一种简单易行的方法就是在删除后更新你的第一张表,替换已删除的图片。

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