オンボードのトリガーを使用して単純な t-sql スクリプトの問題を解決するのを手伝ってくれる人はいますか? 非常に単純なトリガーを使用して、あるテーブルから別のテーブルにデータをコピーします (これらのテーブル間に関係はありません)。(同じスクリプトから) トリガーを作成した直後に最初にデータを挿入しようとすると、望ましい結果が得られますが、次のすべての試みは失敗し、次のプロンプトが表示The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.
されます。以下のトリガーを見てください。
CREATE TRIGGER AuthorInsert ON Author
INSTEAD OF INSERT
AS
BEGIN -- //- 1 -//
--***************** if insert was correct ********************
IF (SELECT COUNT(*) FROM INSERTED) > 0
BEGIN --//- 2 -//
DECLARE @id int, @roleId int;
DECLARE @nameId int, @reestrCodeId int, @passportDataId int, @addressId int, @phoneId int;
SET @nameId = (SELECT INSERTED.NameID FROM INSERTED);
SET @reestrCodeId = (SELECT INSERTED.ReestrCodeID FROM INSERTED);
SET @passportDataId = (SELECT INSERTED.PassportDataID FROM INSERTED);
SET @addressId = (SELECT INSERTED.AddressID FROM INSERTED);
SET @phoneId = (SELECT INSERTED.PhoneID FROM INSERTED);
BEGIN TRY
INSERT INTO Role(RoleName) VALUES('Author');
END TRY
BEGIN CATCH
END CATCH
SET @roleId = (SELECT Role.RoleID FROM Role WHERE Role.RoleName = 'Author');
INSERT INTO Employee(NameID, ReestrCodeID, RoleID, PassportDataID, AddressID, PhoneID)VALUES
(@nameId, @reestrCodeId, @roleId, @passportDataId, @addressId, @phoneId);
SET @id = (SELECT Employee.EmployeID FROM Employee WHERE Employee.EmployeID = @@IDENTITY) + 1;
INSERT INTO Author VALUES(@id, @nameId, @reestrCodeId, @passportDataId, @addressId, @phoneId);
END -- //- 2 -//
END -- //- 1 -//
テーブルの図は非常に原始的であるため、投稿する理由はありません(上記のように、これらのテーブル間に直接的な関係はありません)。私のスクリプトのどこが間違っていて、実際にその奇妙なエラーが何を意味するのでしょうか?