powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер
22 сообщений из 22, страница 1 из 1
Триггер
    #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
Триггер
    #39944780
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhusip,

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


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

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

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

....
stax
...
Рейтинг: 0 / 0
Триггер
    #39944806
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhusip
oragraf,
вот только не знаю как лучше написать hire_date
Писать надо так, как оно есть на самом деле, а не так, что oragraf издевательски назвал "Годно".
zhusip
есть мысли но ошибка за ошибкой
То, что мысли есть, - это хорошо. Плохо, что нет образования :/
...
Рейтинг: 0 / 0
Триггер
    #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
Триггер
    #39944834
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus

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


хм... а давно ли идентификаторы можно представлять литералами?
...
Рейтинг: 0 / 0
Триггер
    #39944839
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А меня что прямые апосторофы, что обратные в названии колонки вообще умиляют (чай у нас не MySQL, хоть он нынче и Oracle :) )
...
Рейтинг: 0 / 0
Триггер
    #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
Триггер
    #39944841
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Да, недосмотрел, что это не литерал, а переменная.
Уверен, что и теперь хорошо досмотрел?
...
Рейтинг: 0 / 0
Триггер
    #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
Триггер
    #39944911
zhusip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus, Спасибо, за то что показали мои ошибки. Не хочу оправдываться, но я новичек, да и русский язык тоже знаю не очень хорошо. Зарегался в данном форуме потому что на моем родном языке их нету.
...
Рейтинг: 0 / 0
Триггер
    #39944926
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhusip
SQL*Plus, Спасибо, за то что показали мои ошибки.
Не хочу оправдываться, но я новичек, да и русский язык тоже знаю не очень хорошо.
Зарегался в данном форуме потому что на моем родном языке их нету.

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

Заходите ещё, не стесняйтесь! :-)
...
Рейтинг: 0 / 0
Триггер
    #39944935
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhusip
Нужно напсиать код трригера который проверяет на првильность
Триггер тут нужен, как баяну пятая коза.
...
Рейтинг: 0 / 0
Триггер
    #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
Триггер
    #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
Триггер
    #39945002
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
О чем речь?

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

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

Чтобы автор темы понял о чем идет речь!
...
Рейтинг: 0 / 0
Триггер
    #39945111
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Чтобы автор темы понял о чем идет речь!
Если считаешь, что автор что-то должен понять, чего в твоем скрипте не было, пиши непосредственно автору.
...
Рейтинг: 0 / 0
Триггер
    #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
Триггер
    #39945138
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
SQL*Plus
Чтобы автор темы понял о чем идет речь!
Если считае те , что автор что-то должен понять, чего в вашем скрипте не было, пиши те непосредственно автору.
Что мне делать, я решу сам.
Советы такие напраляй те , пожалуйста, себе и в... "страну советов"... :-)
...
Рейтинг: 0 / 0
Триггер
    #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
22 сообщений из 22, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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