这听起来像你需要进行几个步骤:
-- 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即可更新依赖/客户端表数据并构建约束。让我知道你是否想要更多的例子。