Jesper TMedlem sedan nov. 20017 058 inlägg
Hur skulle jag kunna skapa en transaktion för att endast köra den andra deleten om den första raderat något?
ALTER PROCEDURE sp_delPict
(
@id bigint,
@uid bigint
)
AS
DELETE FROM pictures WHERE id=@id AND advId=@uid
DELETE FROM search_pics WHERE picid=@id
RETURN
NöffMedlem sedan nov. 2003569 inlägg
(ms-sql-server)
BEGIN TRANSACTION
DELETE FROM pictures WHERE id=@id AND advId=@uid
IF (@@ROWCOUNT>0)
BEGIN
DELETE FROM search_pics WHERE picid=@id
END
COMMIT TRANSACTION
såhär, men du borde inte göra på det här sättet , sätt hellre ON DELETE CASCADE på "search_pics" så slipper du oroa dig över om något har blivit raderat i tabell 1.
Jesper TMedlem sedan nov. 20017 058 inlägg
Jo, jag vet men när jag testade det så fick jag detta:
- Det går inte att skapa relationen FK_search_pics_pictures.
ADO-fel: Introducing FOREIGN KEY constraint 'FK_search_pics_pictures' on table 'search_pics' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
Vet inte vad jag har hittat på.
Primärnyckeltabell : Pictures id
Sekundärnyckeltabell : search_pics picid
Jesper TMedlem sedan nov. 20017 058 inlägg
Ok, det verkar funka om man inte väljer ON DELETE CASCADE i relationen. Av någon märklig anledning.
NöffMedlem sedan nov. 2003569 inlägg
-ADO-fel: Introducing FOREIGN KEY constraint 'FK_search_pics_pictures' on table 'search_pics' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Detta fel får du för att du satt ON DELETE CASCADE på tabeller som redan är involverade i en DELETE CASCADE. Du måste tänka i hierarkiska relationer när du sätter CASCADE
NöffMedlem sedan nov. 2003569 inlägg
Ok, det verkar funka om man inte väljer ON DELETE CASCADE i relationen. Av någon märklig anledning.
Jo, mitt exempel visar hur man gör om du INTE använder ON DELETE CASCADE, men det är inget att rekommendera. sätt CASCADE :h