Вставить триггер - PullRequest
       28

Вставить триггер

0 голосов
/ 30 мая 2011

Я использую простой триггер ins_process для захвата вставок / обновлений в таблице process.Эта ins_process вставляет данные в таблицу process_audit.

process содержит следующие первоначально вставленные данные в указанном порядке:

id    name    description
---   ----    -----------
1     proc1   sql
2     proc2   scripting
3     proc3   java

Это создает данные в process_auditследующим образом:

id    name    description    insert_dt
---   ----    -----------    ---------
3     proc3   java           [a minute ago]
2     proc2   scripting      [a minute ago]
1     proc1   sql            [a minute ago]

Почему записи вставляются в обратном порядке?Когда я редактирую строку из внешнего интерфейса, данные в process_audit выглядят следующим образом:

id    name    description    insert_dt
---   ----    -----------    ---------
3     proc3   java           [a minute ago]
2     proc2   scripting      [a minute ago]
1     proc1   sql            [a minute ago]
2     proc2   scripting      [now]

Это не такая большая проблема для меня.Мне интересно, если это стандартное поведение или что-то не так в том, как я создал триггер.

Вот как я создал триггер:

create trigger [dbo].[ins_process]  
on [dbo].[process] for insert, update    
as
set nocount on    
begin    
insert into process_audit
    (id, name, description, insertdate)    
select 
    id, name, description,current_timestamp
from inserted ins    
end  

Кроме того,id столбец в таблице process_audit не является столбцом идентификатора.

1 Ответ

1 голос
/ 30 мая 2011

Откуда вы знаете, в каком порядке SQL вставлял строки в таблицу?

Я предполагаю, что вы запросили select * from process_audit и ожидаете увидеть строки в том же порядке, в котором они были вставлены.Это недопустимое ожидание.

SQL-сервер не гарантирует какой-либо порядок, если order by не указан.Кроме того, SQL-сервер не поддерживает порядок вставки строк.

Скорее всего, возвращаемые результаты будут упорядочены по порядку кластерного индекса, но все еще не гарантированы.

Если вы добавите собственную идентификацию Idстолбец или CreatedDateTime столбец с ограничением по умолчанию, это будет лучшим индикатором порядка вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...