我将一些文件信息存储在DB中,并通过sql生成文件名。
我正在更新所有行:
UPDATE contacts_New SET PhotoName=PersonName||'_'|| Date
问题是,我想重命名重复,如:
Person1_Date -> Person1_Date
........
Person2_Date -> Person2_Date
Person2_Date -> Person2_Date-2
Person2_Date -> Person2_Date-3
Person2_Date -> Person2_Date-4
........
Person10_Date -> Person10_Date
我尝试使用UPDATE TRIGGER:
CREATE TRIGGER ReNamePhotoNames UPDATE OF PhotoName ON contacts_New for each row
BEGIN
UPDATE contacts_New SET PhotoName=PhotoName || '-' || (SELECT count(*)+1 from contacts_New where PhotoName=new.PhotoName) WHERE (PhotoName=new.PhotoName);
END;
结果:
Person1_Date -> Person1_Date
........
Person2_Date -> Person2_Date
Person2_Date -> Person2_Date-2
Person2_Date -> Person2_Date-2
Person2_Date -> Person2_Date-2
........
Person10_Date -> Person10_Date
我该如何解决这个问题?
非常感谢!
答案 0 :(得分:0)
我解决了问题:
DROP TRIGGER IF exists ReNamePhotoNames;
CREATE TRIGGER ReNamePhotoNames AFTER UPDATE OF PhotoName ON contacts_New for each row
BEGIN
UPDATE contacts_New SET PhotoName =
new.PhotoName ||
CASE WHEN
(SELECT count(*) from contacts_New where (PhotoName LIKE new.PhotoName ||'%')) > 1
THEN
(SELECT count(*) from contacts_New where (PhotoName LIKE new.PhotoName ||'%'))
ELSE '' END || '.jpg'
WHERE ((PhotoName LIKE new.PhotoName) AND (IFNULL(PhotoCreated,'') IS NOT ''));
END;