2017-02-20 2 views
0

Я работаю на SQL Server 2008 и у меня есть две таблицы:Хранимая процедура вставки После вставки

  • Первое: Born таблица с колоннами ID, имя, адрес, Birth_Date
  • Второе: Citizen таблица со столбцами ID, имя, доход, Адрес

Теперь я хочу базу данных, чтобы вставить строку в Citizen всякий раз, когда я вставить строку в Born, что означает, что я хочу «вставить Citizen после вставки в Борна».

Но мне нужно, чтобы быть параметр, так что я не должен делать то же самое каждый раз, когда

я добавил хранимую процедуру

Create proc CitizenBorn 
As 
Begin 
    Insert into dbo.Citizen (ID, Name, Income, Address, Card_ID) 
     Select 
      Id, Name, '0', Address, Card_ID 
     From 
      dbo.Born 
End 

Но это не сработало, потому что Я попытался вставить строку в «Born стола», но это не повлияло «Citizen стола»

+0

Почему вы не используете триггер на таблице «Born»? –

+1

Вы хотите использовать триггер AFTER INSERT на таблице Born, в которой вы используете данные в сборке «вставленные», чтобы заполнить таблицу Citizen. – pmbAustin

+0

Спасибо WEI_DBA, спасибо pmbAustin, но я сделал это уже, он тоже не работал, а триггеры не являются параметрами ... Или я просто не знаю, как это работает! Создание триггера CitizenBorn На dbo.Born После вставки Как Begin Вставьте в dbo.Citizen (ID, имя, доход, Адрес, Card_ID) Выберите Id, Name, '0', Адрес, Card_ID От dbo.Born Конец –

ответ

1

Создать триггер Борна для вставки в таблицу Citizen с каждой вставкой в ​​Борн:

CREATE TRIGGER Born_Insert 
    ON dbo.Born 
    AFTER INSERT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    INSERT INTO dbo.Citizen ([ID], [Name], [Income], [Address], [Card_ID]) 
     SELECT [Id], [Name],'0', [Address], [Card_ID] 
      FROM inserted; 
END 
GO 
+0

Это означает, что у вас уже есть строка в Citizen для строки, введенной в Born. Что бы показалось странным, поскольку, казалось бы, здесь должно быть взаимно-однозначное соответствие. Я бы предположил, что обе таблицы имеют первичный ключ в ID. Возможно, у вас есть только некоторые недопустимые тестовые данные? Очистите обе таблицы и повторите попытку? – pmbAustin

+0

Также имейте в виду, что с этим триггером вы больше не должны вводить ручные вставки в таблицу Citizen. Born будет автоматически вставлять необходимые данные в Citizen. Убедитесь, что у вас нет кода, пытающегося сделать это в любом месте. – pmbAustin

Смежные вопросы