0
SQL Server 2016を使用しており、削除時にカスケードを実装しようとしています。それはうまくいきますが、コードを単一のスクリプトに入れても意味がありません。 --subproject
personと--activity
に制約をドロップするコードは、再び制約を別のファイルに追加する必要があります。削除時のSQL Serverカスケード
だから、これは一つのファイルに
ALTER TABLE dbo.SubProjectPerson
DROP CONSTRAINT SubProjectPerson_SubProject
であり、これはそれが
の作品の唯一の方法は、ここで私は
を持っているスクリプトであることを別のファイルにALTER TABLE dbo.SubProjectPerson
ADD CONSTRAINT SubProjectPerson_SubProject
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
です
BEGIN TRY
BEGIN TRANSACTION
--subproject person
ALTER TABLE dbo.SubProjectPersonRole
DROP CONSTRAINT SubProjectPersonRole_SubProjectPerson
ALTER TABLE dbo.SubProjectPersonRole
ADD CONSTRAINT SubProjectPersonRole_SubProjectPerson
FOREIGN KEY (SubProjectPersonID)
REFERENCES dbo.SubProjectPerson(SubProjectPersonID)
ON DELETE CASCADE;
ALTER TABLE dbo.SubProjectPerson
DROP CONSTRAINT SubProjectPerson_SubProject
ALTER TABLE dbo.SubProjectPerson
ADD CONSTRAINT SubProjectPerson_SubProject
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
--activity
ALTER TABLE dbo.Activity
DROP CONSTRAINT Activity_SubProject
ALTER TABLE dbo.Activity
ADD CONSTRAINT Activity_SubProject
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
--subproject
ALTER TABLE dbo.SubProjectDocument
DROP CONSTRAINT SubProjectDocument_SubProject
ALTER TABLE dbo.SubProjectDocument
ADD CONSTRAINT SubProjectDocument_SubProject
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
ALTER TABLE dbo.SubProjectNote
DROP CONSTRAINT SubProjectNote_SubProject
ALTER TABLE dbo.SubProjectNote
ADD CONSTRAINT SubProjectNote_SubProject
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
--communication thread
ALTER TABLE dbo.CommunicationThread
DROP CONSTRAINT CommunicationThread_SubProjectID
ALTER TABLE dbo.CommunicationThread
ADD CONSTRAINT CommunicationThread_SubProjectID
FOREIGN KEY (SubProjectID)
REFERENCES dbo.SubProject(SubProjectID)
ON DELETE CASCADE;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
この長いスクリプトはエラーなく正常に実行されていますが、別のファイルで実行しない限り、これらの2つのテーブルの変更は取り除かれません。ここで何が間違っていますか?
あなたのすべての 'alter'文の後にセミコロンは必要ありませんか? プリント1 ALTER TABLE SubProjectPersonRole DROP CONSTRAINT SubProjectPersonRole_SubProjectPerson: – Beth
いやには、何も変更しない、私はそれがprint文を追加し、1実行取得されていない例を参照してください –
試して動作するために3つのスクリプトにこれを分割する必要があります print 1 – James