ฉันมีฟังก์ชันทริกเกอร์ที่ถูกเรียกโดยหลายตารางเมื่อมีการอัปเดต COLUMN A เพื่อให้สามารถอัปเดต COLUMN B ตามค่าจากฟังก์ชันอื่นได้ (อธิบายยากกว่าที่เป็นจริง) ฟังก์ชันทริกเกอร์ใช้ col_a และ col_b เนื่องจากมีความแตกต่างกันในตารางที่ต่างกัน
IF needs_updated THEN
sql = format('($1).%2$s = dbo.foo(($1).%1$s); ', col_a, col_b);
EXECUTE sql USING NEW;
END IF;
เมื่อฉันพยายามเรียกใช้รูปแบบข้างต้น รูปแบบจะสร้าง sql นี้:
($1).NameText = dbo.foo(($1).Name);
เมื่อฉันรัน SQL ด้วยการใช้ ฉันคาดหวังว่าสิ่งนี้จะเกิดขึ้น (ซึ่งใช้งานได้เมื่อดำเนินการโดยตรงโดยไม่มี sql แบบไดนามิก):
NEW.NameText = dbo.foo(NEW.Name);
ฉันจะได้รับ:
[42601] ข้อผิดพลาด: ข้อผิดพลาดทางไวยากรณ์ที่หรือใกล้ "$1"
ฉันจะอัปเดตคอลัมน์ในเรคคอร์ด/ประเภทคอมโพสิตใหม่แบบไดนามิกได้อย่างไร