Использование output
!
INSERT INTO dbo.Activity (
ContactID,
ActivityDate,
ActivityName,
ActivityNote,
ActivityOwner
)
SELECT
ContactID,
GETDATE(),
'Contact ' + ContactFirstName + ' ' + ContactLastName,
'Contact was added by the system.',
'System'
FROM (
INSERT INTO dbo.Contacts (ContactFirstName,ContactLastName,ContactCompany)
OUTPUT inserted.ContactID, inserted.ContactFirstName, inserted.ContactLastName
VALUES ('Richard','Burns',NULL)
) x
Подробнее о магии output
, см. Здесь .
Вы также можете использовать триггер на столе, чтобы сделать его более автоматическим, вместо того, чтобы каждый раз вставлять его вручную. Также используются таблицы inserted
/ deleted
.
Вы бы сделали это с помощью:
CREATE TRIGGER Contact_LogActivity ON dbo.Contacts FOR INSERT AS
INSERT INTO dbo.Activity (
ContactID,
ActivityDate,
ActivityName,
ActivityNote,
ActivityOwner
)
SELECT
ContactID,
GETDATE(),
'Contact ' + ContactFirstName + ' ' + ContactLastName,
'Contact was added by the system.',
'System'
FROM
Inserted
Теперь, когда любая строка вставляется в Контакты, она регистрирует ее в Activity. Подробнее о триггерах см. здесь .