Tôi đang thực hiện thay đổi đối với cơ sở dữ liệu hiện có trong khi phát triển phần mềm mới. Ngoài ra còn có khá nhiều phần mềm kế thừa mà sử dụng cơ sở dữ liệu mà cần phải tiếp tục làm việc, tức là tôi muốn duy trì các bảng cơ sở dữ liệu hiện có, procs vvCÀI ĐẶT CẬP NHẬT Kích hoạt và Cập nhật Khóa Chính
Hiện nay tôi có bàn
CREATE TABLE dbo.t_station ( tx_station_id VARCHAR(4) NOT NULL, tx_description NVARCHAR(max) NOT NULL, tx_station_type CHAR(1) NOT NULL, tx_current_order_num VARCHAR(20) NOT NULL, PRIMARY KEY (tx_station_id) )
Tôi cần bao gồm một trường mới trong bảng này đề cập đến một Nhà máy (cơ sở sản xuất) và di chuyển tx_current_order_num sang một bảng khác vì nó không bắt buộc đối với tất cả các hàng. Vì vậy, tôi đã tạo ra bảng mới: -
CREATE TABLE Private.Plant ( PlantCode INT NOT NULL, Description NVARCHAR(max) NOT NULL, PRIMARY KEY (PlantCode) ) CREATE TABLE Private.Station ( StationId VARCHAR(4) NOT NULL, Description NVARCHAR(max) NOT NULL, StationType CHAR(1) NOT NULL, PlantCode INT NOT NULL, PRIMARY KEY (StationId), FOREIGN KEY (PlantCode) REFERENCES Private.Plant (PlantCode) ) CREATE TABLE Private.StationOrder ( StationId VARCHAR(4) NOT NULL, OrderNumber VARCHAR(20) NOT NULL, PRIMARY KEY (StationId) )
Bây giờ, tôi không muốn có cùng dữ liệu ở hai nơi vì vậy tôi quyết định thay đổi bảng dbo.t_station vào một cái nhìn và cung cấp thay vì kích hoạt để thực hiện DELETE, INSERT và UPDATE. Không có vấn đề tôi có [hầu hết] họ làm việc.
Câu hỏi của tôi liên quan đến trình kích hoạt INSTEAD OF UPDATE, cập nhật cột Primary Key (tx_station_id) và cập nhật cho nhiều hàng.
Bên trong khối trình kích hoạt, có cách nào để nối các bảng [psuedo] được chèn vào và đã xóa để tôi biết 'trước khi cập nhật khóa chính' và 'sau khi cập nhật khóa chính' không? Một cái gì đó như thế này ...
UPDATE sta SET sta.StationId = ins.tx_station_id FROM Private.Station AS sta INNER JOIN deleted AS del INNER JOIN inserted AS ins ON ROW_IDENTITY_OF(del) = ROW_IDENTITY_OF(ins) ON del.tx_station_id = sta.StationId
Ở giai đoạn này, tôi đã đặt dấu kiểm vào khối kích hoạt để khôi phục cập nhật nếu cột khóa chính được cập nhật và có nhiều hàng trong chèn hoặc xóa , bàn.
Tôi đã hy vọng ai đó có thể có câu trả lời hay hơn! Vấn đề này đã làm tôi thất vọng trong quá khứ. –