這聽起來像你需要進行幾個步驟:
-- Assuming you have PK and FK names:
CREATE TABLE #one (alias VARCHAR(10) NOT NULL, meta VARCHAR(MAX))
CREATE TABLE #device (alias VARCHAR(10) NOT NULL, device_info VARCHAR(MAX))
ALTER TABLE #one ADD CONSTRAINT pk_one PRIMARY KEY (alias)
ALTER TABLE #device ADD CONSTRAINT fk_device_one FOREIGN KEY (alias) REFERENCES #one(alias)
-- Data setup:
INSERT INTO #one (alias, meta) VALUES ('one', '')
INSERT INTO #one (alias, meta) VALUES ('two', '')
INSERT INTO #one (alias, meta) VALUES ('three', '')
INSERT INTO #one (alias, meta) VALUES ('four', '')
INSERT INTO #device (alias, device_info) VALUES ('one', '')
INSERT INTO #device (alias, device_info) VALUES ('two', '')
INSERT INTO #device (alias, device_info) VALUES ('three', '')
INSERT INTO #device (alias, device_info) VALUES ('four', '')
-- STEP 1: Add new fields
ALTER TABLE #one ADD one_id INT IDENTITY(1,1)
ALTER TABLE #device ADD one_id INT
-- STEP 2: Update dependent table data
UPDATE #device SET #device.one_id = #one.one_id FROM #device, #one WHERE #device.alias = #one.alias
-- STEP 3: Update Constraints on primary table
ALTER TABLE #one DROP CONSTRAINT pk_one
ALTER TABLE #one ADD CONSTRAINT pk_one PRIMARY KEY (one_id)
-- STEP 4: Update FK Constraints
ALTER TABLE #device DROP CONSTRAINT fk_device_one
ALTER TABLE #device ADD CONSTRAINT fk_device_one FOREIGN KEY (one_id) REFERENCES #one(one_id)
我認爲這是可能的查詢系統表收穫你的約束標識並將上述代碼重寫爲存儲過程,以便您只需調用SPU即可更新依賴/客戶端表數據並構建約束。讓我知道你是否想要更多的例子。