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