gp1619 โพสต์ 2018-4-25 10:52:16

ต้องกานเปลี่ยนรหัสลูกค้าที่เหมือนกันในทุก table vb.net

รบกวนด้วยครับ

puklit โพสต์ 2018-4-26 10:25:46

แก้ไขครั้งสุดท้ายโดย 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 เกิดขึ้นดังนี้



หากคุณได้เปลี่ยนค่าในตารางหลักแล้วตารางที่ผูกความสัมพันธ์ระหว่างตารางและค่าที่ผูกไว้จะเปลียนตามค่าที่ถูกแก้ไข


gp1619 โพสต์ 2019-10-9 11:46:01

puklit ตอบกลับเมื่อ 2018-4-26 10:25
1. กรณีไม่ได้สร้าง Foreign key ผูกความสัมพันธ์ระหว่างตาราง ...

ขอบพระคุณมากๆ ครับ :)
หน้า: [1]
ดูในรูปแบบกติ: ต้องกานเปลี่ยนรหัสลูกค้าที่เหมือนกันในทุก table vb.net