Ich habe Schwierigkeiten herauszufinden, den richtigen Weg, um das folgende Szenario zu verwalten.TSQL Aktualisierung/Löschen von JunctionTable
Ich habe 3 Tabellen Kategorien, Auflisten Junction
Ich bin mit der Junction-Tabelle für viele-zu-viele Beziehungen zwischen meinen Kategorien & Eintrag Tabellen, wie jeder gegebenen Datensatz in meinem Eintrag Tabelle kann 1 zugeordnet werden oder viele Kategorien aus der Kategorien-Tabelle.
Ich habe herausgefunden, wie Sie richtig in beide einfügen. Jetzt ist mein Dilemma Update.
Wenn ein Benutzer seine Auflistung in neue Kategorien aktualisieren möchte, muss mein Code alle vorhandenen Datensätze in der JunctionTable löschen und durch neue ersetzen. Wie kann ich eine SQL-Anweisung schreiben, die das leistet?
Dies sind meine beiden INSERT-Anweisungen, die ausgelöst werden, wenn ich einen Eintrag hinzufüge.
INSERT INTO BND_Listing_testing
(Company,Doors,Address,Address2,City,Region,Country,PostalCode,Lat,Long,Phone,Fax,Website,Description,Actualized,Verified,IMG1,IMG2,IMG3,IMG4,DateAdded)
VALUES
('[Company]','[Doors]','[Address]','[Address2]','[City]','[Region]','[Country]','[PostalCode]','[Lat]','[Long]','[Phone]','[Fax]','[Website]','[Description]','[Actualized]','[Verified]','[Image1]','[Image2]','[Image3]','[Image4]','[DateAdded]')
select scope_identity()
Ich bin Speichern der Identität der obigen Abfrage in einem Token [ScopedLID] für die folgende Abfrage
DECLARE @CatIDStr VARCHAR(100) = '[CatID]',@CatID VARCHAR(100) = ''
WHILE LEN(@CatIDStr) > 0
BEGIN
IF CHARINDEX(',',@CatIDStr) = 0
BEGIN
SET @CatID = @CatIDStr
SET @CatIDStr = ''
END
ELSE
BEGIN
SELECT @CatID = SUBSTRING(@CatIDStr,0,CHARINDEX(',',@CatIDStr))
SELECT @CatIDStr=SUBSTRING(@CatIDStr,CHARINDEX(',',@CatIDStr)+1,LEN(@CatIDStr))
END
INSERT INTO BND_ListingJunction_testing (Junc_LID,Junc_CatID)
Values ('[ScopedLID]',@CatID)
END
Trigger verwenden? https://msdn.microsoft.com/en-us/library/ms178110.aspx – DVT
@DVT Danke für den Vorschlag, ich werde diese Seite lesen. – UserSN