я пытаюсь выполнить перед вставкой триггера, но я получаю ошибки SQL - PullRequest
0 голосов
/ 10 мая 2011

чего я хочу достичь, так это того, что у меня есть таблица заказов. я хочу выполнить триггер до вставки в моей таблице заказов. я хочу захватить имя пользователя лица, выполняющего вставку в таблицу. одна таблица с именем info, содержащая пользователя.

это мой код

create table orders
(
  order_id int,
  quantity  int,
  cost int,
  total_cost int,
  created_date datetime,
  created_by varchar(20)
)

create  trigger beforeInsertdata
 before insert
  on orders
 for each row
  declare 
 v_username varchar2(10);
begin
 -- Find username of person performing INSERT into table

    SELECT user INTO v_username
    FROM info;
 -- Update create_date field to current system date
    :new.create_date := sysdate;
 -- Update created_by field to the username of the person performing the INSERT
    :new.created_by := v_username;

END;

--user information--
create table info
(
  userid int ,
  user_name varchar(10)
)

insert into info values(1,'vivek')
select * from info

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

В основном, триггеры подразделяются на два основных типа: -

1) После запуска (для запуска)

2) Вместо триггеров

и синтаксис для триггера

  CREATE TRIGGER trigger_name ON table_name 
  [FOR|AFTER|INSTEAD OF] [INSERT|UPDATE|DELETE]

  AS

  //your code goes here   

  GO

ПРИМЕЧАНИЕ: ключевое слово FOR, используемое для команды INSERT | UPDATE, где в качестве AFTER USED FOR DELETE Command.

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

Трудно сказать, что вы действительно пытаетесь сделать.Я изменил пример кода, чтобы он работал на SQL2K5, и сделал несколько предположений о том, как вы хотите использовать подключенную учетную запись пользователя.

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