Это возможно? добавление 4 новых столбцов: createDate ,ifiedDate, создалBy, ModifiedBy? - PullRequest
0 голосов
/ 13 февраля 2020

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

Например, если пользователь вводит

insert into tableName values (val1,val2,val3)

, то в таблице будет 7 новых значений в новой строке:

val1, val2, val3, создалDate ,ifiedDate, создалBy, ModifiedBy

то же самое, когда пользователь изменяет значение в существующей строке

update TAbleName set val1 = newVal where id = id1

, а затем поля «updatedDate» и «ifiedBy »в этой строке будут автоматически изменены

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Частично, значение по умолчанию столбца может сделать это (для созданной даты и пользователя, который сделал это); для модификаций используйте триггер.

Вот пример:

SQL> create table test (id number, name varchar2(20));

Table created.

SQL> alter table test add
  2    (created_date    date           default sysdate,
  3     created_by      varchar2(30)   default user,
  4     modified_date   date,
  5     modified_by     varchar2(30)
  6    );

Table altered.

SQL> insert into test (id, name) values (1, 'Little');

1 row created.

SQL> select * From test;

        ID NAME                 CREATED_DATE        CREATED_BY MODIFIED_DATE       MODIFIED_B
---------- -------------------- ------------------- ---------- ------------------- ----------
         1 Little               13.02.2020 22:23:17 SCOTT

Обновление строки чуть позже - ничего не изменилось (для создано и изменено столбцы):

SQL> update test set name = 'Foot' where id = 1;

1 row updated.

SQL> select * From test;

        ID NAME                 CREATED_DATE        CREATED_BY MODIFIED_DATE       MODIFIED_B
---------- -------------------- ------------------- ---------- ------------------- ----------
         1 Foot                 13.02.2020 22:23:17 SCOTT

Давайте создадим триггер. Это просто:

SQL> create or replace trigger trg_testmod_bu
  2    before update on test
  3    for each row
  4  begin
  5    :new.modified_date := sysdate;
  6    :new.modified_by   := user;
  7  end;
  8  /

Trigger created.

SQL> update test set name = 'Bigfoot' where id = 1;

1 row updated.

SQL> select * From test;

        ID NAME                 CREATED_DATE        CREATED_BY MODIFIED_DATE       MODIFIED_B
---------- -------------------- ------------------- ---------- ------------------- ----------
         1 Bigfoot              13.02.2020 22:23:17 SCOTT      13.02.2020 22:26:38 SCOTT

Верно; триггер обновил оба измененных столбца.

0 голосов
/ 13 февраля 2020

Какую базу данных вы используете?

Для автоматического заполнения при добавлении новой строки необходимо установить «привязку по умолчанию» или «поле по умолчанию»

ALTER TABLE YourTable 
    ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn

Для обновления: вам нужно создать триггер для редактирования столбца

Как: создать триггер для автоматического изменения даты обновления с помощью SQL Server 2008

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