ต้องกานเปลี่ยนรหัสลูกค้าที่เหมือนกันในทุก table vb.net
รบกวนด้วยครับแก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2018-5-3 10:11
1. กรณีไม่ได้สร้าง Foreign key ผูกความสัมพันธ์ระหว่างตารางเอาไว้สามารถเขียนคำสั่งไว้ฝั่งฐานข้อมูลได้เลยครับโดยใช้ T-SQL สร้าง Trigger เหตุการขึ้นมา
T-SQL โค้ดตามตัวอย่างข้างล่างนี้ได้เลย
ตัวอย่างตารางที่ผมสร้าง
โค้ดที่สร้างใน Trigger ของตาราง Employee กำหนดเหตุการ์ณ์ไว้หลังมีการแก้ไขข้อมูลดังนี้
CREATE TRIGGER Change_Employee_Name
ON.
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
-- ประกาศตัวแปร
DECLARE @Old_Emp_Name VARCHAR(50); -- เก็บค่าฟิล์ดเก่า
DECLARE @New_Emp_Name VARCHAR(50); -- เก็บค่าฟิล์ดใหม่
SET @Old_Emp_Name = (SELECT Emp_Name FROM DELETED) -- เก็บค่าฟิล์ดเก่าที่ถูกแก้ไขลบออกจากตารางไว้ใน @Old_Emp_Name
SET @New_Emp_Name = (SELECT Emp_Name FROM INSERTED) -- เก็บค่าฟิล์ดใหม่ที่ถูกแก้ไขเพิ่มเข้ามาใหม่ในตารางไว้ใน @New_Emp_Name
-- ส่งค่า Emp_Name ใหม่จาก @New_Emp_Name ไปแก้ไขตาราง Emp_Calendar ฟิล์ด Emp_Name
UPDATE .
SET = @New_Emp_Name
WHERE = @Old_Emp_Name
END
หลังจากสร้างเสร็จในตารางจะมี Trigger เหตุการณ์ขึ้นมาตามรูป
2. หากข้อมูลต้องมีการเชื่อมแบบ Foreign key ให้ใช้วิธีนี้ครับ
สร้าง Foreign key โดยกดปุ่ม New query ขึ้นมา แล้วเขียนคำสั่งดังนี้
ALTER TABLE dbo.Emp_Calendar
ADD CONSTRAINT FK_Emp_Calendar_EmpName
FOREIGN KEY(Emp_Name) REFERENCES dbo.Employee(Emp_Name)
ON UPDATE CASCADEแล้วกดปุ่ม Execute เพื่อรันคำสั่งสร้างความสัมพันธ์ของตารางทั้งสอง ก็ไม่จำเป็นต้องสร้าง Trigger ในตารางต่อไป
จะมี Foreign key เกิดขึ้นดังนี้
หากคุณได้เปลี่ยนค่าในตารางหลักแล้วตารางที่ผูกความสัมพันธ์ระหว่างตารางและค่าที่ผูกไว้จะเปลียนตามค่าที่ถูกแก้ไข
puklit ตอบกลับเมื่อ 2018-4-26 10:25
1. กรณีไม่ได้สร้าง Foreign key ผูกความสัมพันธ์ระหว่างตาราง ...
ขอบพระคุณมากๆ ครับ :)
หน้า:
[1]