Триггер не может поймать при вставке данных в таблицу при использовании файла - PullRequest
0 голосов
/ 05 апреля 2019

Вот таблица

CREATE TABLE Users
(
    Id INT PRIMARY KEY IDENTITY(0,1),
    Name NVARCHAR(20) NOT NULL,
    Surname NVARCHAR(25) NOT NULL,
    Email NVARCHAR(30), 
    Facebook NVARCHAR(30),

    CHECK(Email IS NOT NULL OR Facebook IS NOT NULL)
);

Это данные, которые я должен вставить в таблицу Users.

1, N'Alex', Mituchin, qwe@gmail.com, NULL

Это BULK INSERT

BULK INSERT Users
FROM 'C:\Users\SAMIR\Downloads\Telegram Desktop\users.txt'
WITH (
      FIELDTERMINATOR = '\t',
      ROWTERMINATOR = '\n',
     --FIRSTROW = 0,
     --UTF-8
     CODEPAGE = '65001',
     DATAFILETYPE = 'widechar'
);

И, наконец, это триггер, который должен фильтровать данные при вставке данных в Users таблицу

CREATE TRIGGER InsertedUsersTB
ON Users
AFTER INSERT
AS
    UPDATE Users
    SET NAME = (CASE 
                   WHEN NAME LIKE 'N''%'''
                      THEN SUBSTRING(Name, 3, LEN(Name) - 3)
                      ELSE NAME
                END)
    FROM Users

Проблема в том, что когда я массово вставляю в свою таблицу Users, триггер не может это перехватить. Как мне сделать, чтобы триггер начал работу?

1 Ответ

3 голосов
/ 05 апреля 2019

Если вы прочитаете документацию для BULK INSERT , вы можете обнаружить, что по умолчанию триггеры не запускаются.Вы должны добавить опцию в своем заявлении.Опция просто FIRE_TRIGGERS

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