Есть ли конкретная причина, по которой вы хотите использовать JSON AUTO
?
Для достижения требуемого формата JSON с набором столбцов для каждой строки в своем собственном BLOB-объекте JSON без окружения []
символов, вы можете сделать что-то вроде этого ...
use master
go
if exists(select * from sys.databases where name='StackOverflow')
drop database StackOverflow
go
create database StackOverflow
go
use StackOverflow;
create table dbo.Contact (
ContactId int not null identity,
ProjectId int,
CorrelationId int,
Column1 nvarchar(20),
Column2 nvarchar(20),
Column3 nvarchar(20)
);
create table dbo.ContactAudit (
JsonMessage nvarchar(max),
EventType nvarchar(20),
ContactId int not null,
ProjectId int,
CorrelationId int
);
go
create trigger dbo.InsertContactAudit on dbo.Contact
after insert as
begin
set nocount on;
insert into dbo.ContactAudit (JsonMessage, EventType, ContactId, ProjectId, CorrelationId)
select (
select ContactId, ProjectId, CorrelationId, Column1, Column2, Column3
for json path, without_array_wrapper
), 'create', ContactId, ProjectId, CorrelationId
from inserted;
end
go
insert Contact (ProjectId, CorrelationId, Column1, Column2, Column3)
values (null, null, null, null, null);
insert Contact (ProjectId, CorrelationId, Column1, Column2, Column3)
values (1, 2, 'Foo', 'Bar', 'Baz');
select * from dbo.ContactAudit;
go
Что бы записать следующее в dbo.ContactAudit ...
JsonMessage EventType ContactId ProjectId CorrelationId
----------------------------------------------------------------------------------------------- -------------------- ----------- ----------- -------------
{"ContactId":1} create 1 NULL NULL
{"ContactId":2,"ProjectId":1,"CorrelationId":2,"Column1":"Foo","Column2":"Bar","Column3":"Baz"} create 2 1 2