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
Ich muss ein neues IDENTITY-Feld sowie PKs und FKs zu einer Tabelle hinzufügen. Ich versuche, die Daten in einer temporären Tabelle zu speichern, die ursprüngliche Tabelle zu löschen und dann neu zu erstellen.SQL Script Ungültiger Spaltenname
Wenn ich dieses Skript ausführen bekomme ich einen Fehler:
Invalid column name 'ID'
Ich vermute, es eine Pre-Kompilierung tut und ließ mich wissen, dass ID nicht in der aktuellen Tabelle nicht vorhanden ist.
Was muss ich tun, um dieses Skript so zu ändern, dass es ausgeführt wird?
Wenn ich auf die doppelte Invalid column name 'ID'
Nachricht es mich an das Skript zu diesem Teil bringt:
INSERT INTO
dbo.tblRCatOmit(ID,
RCatID,
CountryID)
Warum drehen Sie die Identität ein und geben dann keinen Wert an? Ich würde einen besseren Namen als ID für Ihre Spalte empfehlen. Vielleicht etwas wie RCatOmitID. Ich würde auch vorschlagen, die Tabellenvorwahl auf Ihren Tischen zu entfernen. Sie tun nichts, außer zusätzliche Tastenanschläge hinzuzufügen und es schwieriger zu machen, zu sehen, auf welche Tabelle Sie verweisen. –
@SeanLange - Einverstanden! Umgang mit Legacy-Code. – webdad3