Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер / 22 сообщений из 22, страница 1 из 1
08.04.2020, 11:41
    #39944775
zhusip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Нужно напсиать код трригера который проверяет на првильность 2 столбца в таблице (к примеру email только латинские буквы или "@" и hire_date не должна быть пойзже даты в момент insert update) при insert, uptade.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TRIGGER checks_for_validity
	BEFORE INSERT OR UPDATE
	ON employees
	FOR EACH ROW
BEGIN
	IF NEW.`email` NOT LIKE '%_@%_.__%' THEN
riserror (20501 ,  '`email` column is not valid');
	END IF;
END;
...
Рейтинг: 0 / 0
08.04.2020, 11:45
    #39944780
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip,

Годно. С таким триггером данные в безопасности.
...
Рейтинг: 0 / 0
08.04.2020, 12:06
    #39944796
zhusip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
oragraf,
вот только не знаю как лучше написать hire_date, есть мысли но ошибка за ошибкой
...
Рейтинг: 0 / 0
08.04.2020, 12:17
    #39944803
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip
oragraf,
вот только не знаю как лучше написать hire_date, есть мысли но ошибка за ошибкой


гугле перевод
hire date - Дата приема на работу

действительно "должна быть позже даты в момент insert update"?

приведите пример дат

....
stax
...
Рейтинг: 0 / 0
08.04.2020, 12:23
    #39944806
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip
oragraf,
вот только не знаю как лучше написать hire_date
Писать надо так, как оно есть на самом деле, а не так, что oragraf издевательски назвал "Годно".
zhusip
есть мысли но ошибка за ошибкой
То, что мысли есть, - это хорошо. Плохо, что нет образования :/
...
Рейтинг: 0 / 0
08.04.2020, 12:40
    #39944815
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip
Нужно напсиать код трригера который проверяет на првильность 2 столбца в таблице
(к примеру email только латинские буквы или "@"
и hire_date не должна быть пойзже даты в момент insert update) при insert, uptade.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TRIGGER checks_for_validity
	BEFORE INSERT OR UPDATE
	ON employees
	FOR EACH ROW
BEGIN
	IF NEW.`email` NOT LIKE '%_@%_.__%' THEN
riserror (20501 ,  '`email` column is not valid');
	END IF;
END;


Исправьте синтаксис
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TRIGGER checks_for_validity
	BEFORE INSERT OR UPDATE
	ON employees
	FOR EACH ROW
BEGIN
	IF :NEW.'email' NOT LIKE '%_@%_.__%' THEN
raise_application_error (20501 ,  '`email` column is not valid');
	END IF;
END;

Публикуйте код после [попытки] его отладки, пожалуйста.

P.S. И синхронизацию рук при нажатии на клавиши отладьте... :-)

P.P.S. Анекдот (оффтопик)
Девушка устраивается на работу в офис:
- Я печатаю слепым методом со скоростью 600 знаков в минуту.
Все ахают от удивления и зависти.
Девушка (тихо, в сторону):
- Но такая фигня получается... :-(
...
Рейтинг: 0 / 0
08.04.2020, 13:15
    #39944834
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus

Исправьте синтаксис
Код: plsql
1.
	IF :NEW.'email' NOT LIKE '%_@%_.__%' THEN


хм... а давно ли идентификаторы можно представлять литералами?
...
Рейтинг: 0 / 0
08.04.2020, 13:20
    #39944839
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
А меня что прямые апосторофы, что обратные в названии колонки вообще умиляют (чай у нас не MySQL, хоть он нынче и Oracle :) )
...
Рейтинг: 0 / 0
08.04.2020, 13:22
    #39944840
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
andrey_anonymous
SQL*Plus

Исправьте синтаксис
Код: plsql
1.
	IF :NEW.'email' NOT LIKE '%_@%_.__%' THEN


хм... а давно ли идентификаторы можно представлять литералами?
Да, недосмотрел, что это не литерал, а переменная.
Код: plsql
1.
	IF :NEW.email NOT LIKE '%_@%_.__%' THEN

Sorry
...
Рейтинг: 0 / 0
08.04.2020, 13:25
    #39944841
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus
Да, недосмотрел, что это не литерал, а переменная.
Уверен, что и теперь хорошо досмотрел?
...
Рейтинг: 0 / 0
08.04.2020, 15:59
    #39944910
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SQL> create table employees(email varchar2(100));

Table EMPLOYEES created.

SQL> CREATE TRIGGER checks_for_validity
  2  	BEFORE INSERT OR UPDATE
  3  	ON employees
  4  	FOR EACH ROW
  5  BEGIN
  6  	IF :NEW.email NOT LIKE '%_@%_.__%' THEN
  7  raise_application_error (20501 ,  '`email` column is not valid');
  8  	END IF;
  9  END;
 10  /

Trigger CHECKS_FOR_VALIDITY compiled

SQL> SHOW ERRORS TRIGGER checks_for_validity;

SQL> COLUMN object_name FORMAT A20;

SQL> SELECT object_name, object_type, status 
  2  FROM user_objects
  3  WHERE object_name = 'CHECKS_FOR_VALIDITY'
  4    AND object_type = 'TRIGGER';

OBJECT_NAME          OBJECT_TYPE             STATUS 
-------------------- ----------------------- -------
CHECKS_FOR_VALIDITY  TRIGGER                 VALID  
...
Рейтинг: 0 / 0
08.04.2020, 16:00
    #39944911
zhusip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus, Спасибо, за то что показали мои ошибки. Не хочу оправдываться, но я новичек, да и русский язык тоже знаю не очень хорошо. Зарегался в данном форуме потому что на моем родном языке их нету.
...
Рейтинг: 0 / 0
08.04.2020, 16:24
    #39944926
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip
SQL*Plus, Спасибо, за то что показали мои ошибки.
Не хочу оправдываться, но я новичек, да и русский язык тоже знаю не очень хорошо.
Зарегался в данном форуме потому что на моем родном языке их нету.

С русским у вас все хорошо, просто опечатки получились...
Но мы вас поняли.

Заходите ещё, не стесняйтесь! :-)
...
Рейтинг: 0 / 0
08.04.2020, 16:38
    #39944935
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
zhusip
Нужно напсиать код трригера который проверяет на првильность
Триггер тут нужен, как баяну пятая коза.
...
Рейтинг: 0 / 0
08.04.2020, 17:15
    #39944944
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
-2-
zhusip
Нужно напсиать код трригера который проверяет на првильность
Триггер тут нужен, как баяну пятая коза.

Под email не требуется:
Код: plsql
1.
2.
3.
4.
5.
insert into employees values('a@b.c')
 
ORA-02290: check constraint (USER.`email` column is not valid) violated
 
SQL> 



А вот с датами сложнее.
...
Рейтинг: 0 / 0
08.04.2020, 17:28
    #39944957
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
andrey_anonymous
-2-
пропущено...
Триггер тут нужен, как баяну пятая коза.

Под email не требуется:
Код: plsql
1.
2.
3.
insert into employees values('a@b.c')
 
ORA-02290: check constraint (USER.`email` column is not valid) violated


А вот с датами сложнее.
Вы тут сами с собой разговариваете?

Расскажите нам нормально, на гражданском языке:
О чем речь?
...
Рейтинг: 0 / 0
08.04.2020, 19:11
    #39945002
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus
О чем речь?

Какая буква непонятна?
- для решения задачи с email триггер не нужен, достаточно check constraint.
- решение задачи с датой (hireDate<sysdate) без триггера несколько сложнее.
...
Рейтинг: 0 / 0
08.04.2020, 22:51
    #39945108
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
andrey_anonymous
SQL*Plus
О чем речь?

Какая буква непонятна?
- для решения задачи с email триггер не нужен, достаточно check constraint.
- решение задачи с датой (hireDate<sysdate) без триггера несколько сложнее.
Текст check constraint в студию, пожалуйста. (в моем скрипте его не было)

Чтобы автор темы понял о чем идет речь!
...
Рейтинг: 0 / 0
08.04.2020, 22:58
    #39945111
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus
Чтобы автор темы понял о чем идет речь!
Если считаешь, что автор что-то должен понять, чего в твоем скрипте не было, пиши непосредственно автору.
...
Рейтинг: 0 / 0
08.04.2020, 23:40
    #39945122
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
SQL*Plus
Текст check constraint в студию, пожалуйста.

Да пожалуйста :)
Код: plsql
1.
create table employees(email varchar2(100) constraint "`email` column is not valid" check (email LIKE '%_@%_.__%'));
...
Рейтинг: 0 / 0
09.04.2020, 00:31
    #39945138
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
-2-
SQL*Plus
Чтобы автор темы понял о чем идет речь!
Если считае те , что автор что-то должен понять, чего в вашем скрипте не было, пиши те непосредственно автору.
Что мне делать, я решу сам.
Советы такие напраляй те , пожалуйста, себе и в... "страну советов"... :-)
...
Рейтинг: 0 / 0
09.04.2020, 00:34
    #39945140
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер
andrey_anonymous
SQL*Plus
Текст check constraint в студию, пожалуйста.

Да пожалуйста :)
Код: plsql
1.
create table employees(email varchar2(100) constraint "`email` column is not valid" check (email LIKE '%_@%_.__%'));

Отлично!

Спасибо! :-)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]