1
BEGIN TRANSACTION
BEGIN TRY
DECLARE @tblRCatOmitTemp TABLE (ID INT IDENTITY(1,1),
RCatId int NOT NULL,
CountryId int NOT NULL)
INSERT INTO @tblRCatOmitTemp
SELECT RCatId, CountryId
FROM dbo.tblRCatOmit TABLOCKX
DROP TABLE dbo.tblRCatOmit
CREATE TABLE dbo.tblRCatOmit(
ID INT IDENTITY(1,1),
RCatId INT NOT NULL,
CountryId INT NOT NULL) ON [PRIMARY]
ALTER TABLE dbo.tblRCatOmit
ADD CONSTRAINT PK_RCatOmit PRIMARY KEY CLUSTERED (ID);
ALTER TABLE dbo.tblRCatOmit
ADD CONSTRAINT FK_RCatOmit_rcatId FOREIGN KEY (RCatId)
REFERENCES dbo.tblRCat (RCatID);
ALTER TABLE dbo.tblRCatOmit
ADD CONSTRAINT FK_RCatOmit_countryId FOREIGN KEY (CountryId)
REFERENCES dbo.tblCountry (CountryID)
SET IDENTITY_INSERT dbo.tblRCatOmit ON
INSERT INTO
dbo.tblRCatOmit(
ID,
RCatID,
CountryID)
SELECT
ID,
RCatID,
CountryID
FROM
@tblRCatOmitTemp
SET IDENTITY_INSERT dbo.tblRCatOmit OFF
COMMIT TRANSACTION tblRCatOmit;
END TRY
BEGIN CATCH
PRINT N'Something Happend!'
ROLLBACK;
END CATCH
我必須添加一個新的IDENTITY字段以及PK和FK到表中。我試圖將數據保存到臨時表中,刪除原始表然後重新創建它。SQL腳本無效列名
當我運行該腳本,我得到一個錯誤:
Invalid column name 'ID'
我猜它是做一個預編譯和讓我知道ID並不在當前的表中。
我需要做些什麼來修改這個腳本,使其運行?
當我雙擊Invalid column name 'ID'
消息時,它給我帶來的這部分腳本:
INSERT INTO
dbo.tblRCatOmit(ID,
RCatID,
CountryID)
爲什麼你將身份插入,然後不提供一個值?我會爲你的專欄推薦一個比ID更好的名字。也許像RCatOmitID。我也建議在你的桌子上取消tbl優先。除了增加額外的按鍵操作,它們什麼也不做,並且讓你很難看到你所引用的表格。 –
@SeanLange - 同意!處理遺留代碼。 – webdad3