Voici une solution de travail qui utilise une table temporaire. Ce n'est peut-être pas idéal et j'ai inclus quelques instructions de dépôt, donc ne l'exécutez pas sur votre machine de production.
-- Build our test tables
CREATE TABLE [URLRecord]
(
[Id] INTEGER IDENTITY PRIMARY KEY,
[Slug] CHARACTER VARYING(255) NOT NULL
)
GO
CREATE TABLE [NewSlugs]
(
[Id] INTEGER IDENTITY PRIMARY KEY,
[NewSlugName] CHARACTER VARYING(255) NULL,
[OldSlugName] CHARACTER VARYING(255) NULL
)
GO
-- Insert test data
INSERT INTO [URLRecord] VALUES ('Original Name');
INSERT INTO [NewSlugs] VALUES ('New Name', 'Original Name');
-- Populate work table with the records we want to modify
SELECT [URLRecord].[Id], [NewSlugs].[NewSlugName] INTO #SlugWork
FROM [URLRecord]
INNER JOIN [NewSlugs] ON [URLRecord].[Slug] = [NewSlugs].[OldSlugName]
-- We're just echoing here
SELECT * FROM #SlugWork
-- Pull everything from our temporary table and update modified records
UPDATE [URLRecord]
SET [URLRecord].[Slug] = [T].[NewSlugName]
FROM #SlugWork AS [T]
WHERE [T].[Id] = [URLRecord].[Id]
-- Proving it's updated
SELECT * FROM [URLRecord]
-- Drop our example stuff, for rerunnability
DROP TABLE #SlugWork
DROP TABLE [NewSlugs]
DROP TABLE [URLRecord]
Il n'y a pas de virgule dans le code. Donc, cela rend très improbable ce message d'erreur. –
Vérifiez ci-dessus et en dessous de votre déclaration .... peut-être que la virgule est tapi de code commenté, ou ne supprime pas complètement. – scsimon
essayer de mettre une déclaration de non-sens avant et après la mise à jour comme 'select « avant update'' et 'sélectionner » après update'' cela devrait nous faire savoir si le problème est ailleurs. Si vous exécutez * studio de gestion *, ouvrez une nouvelle requête et exécutez l'instruction update ici. – TheVillageIdiot