powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / разработка БД для автопредприятия.
21 сообщений из 46, страница 2 из 2
разработка БД для автопредприятия.
    #38631822
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал делать значение по умолчанию ''::character varying. не помогает. при экспорте данных из файла в базы попадают значения NULL
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38631909
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай поле NOT NULL. Заменяй NULL на пустую строку триггером.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38631921
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
если поле будет NOT NULL то у меня вся строка не занесется в таблицу. второй момент NULL мне в таблице не нужен. нужны пустые значения в столбцах
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38631941
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25 селекты SELECT * FROM ... WHERE a IS NULL; в другом случае SELECT * FROM ... WHERE b=''


Код: sql
1.
 SELECT * FROM ... WHERE nullif(b,'') IS NULL 
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38632001
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fte,

то есть средствами БД тут ничего не сделать? тогда мне уж проще скрипты написать, что бы привести данные, которые пойдут в БД к одному виду
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38632117
alena22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, как мне сделать так, что бы по результатам одного столбца (время прохождении дистанции) присваивались значения от 1 и выше другому столбцу (место)
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38632398
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25если поле будет NOT NULL то у меня вся строка не занесется в таблицу. второй момент NULL мне в таблице не нужен. нужны пустые значения в столбцах
Повторяю медленно: заменяй NULL на пустую строку триггером.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38645937
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

не увидел сразу Вашего поста, подскажите пожалуйста пример триггера. только начинаю программировать. и с триггерами еще не сталкивался (с функциями тоже). хотя определенная необходимость в этом уже имеется
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38646539
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

почитал немножко про функции и триггеры, как то мало информации в интернете на русском на эту тему, в основном одни и теже примеры. получилось у меня следующее: есть таблица с 4 полями. в двух полях стоят даты. причем в одной дата стоит не всегда. значит при вставке надо заменять пустое значение на значение NULL. т.е. пустое значение в не за несется в таблицу.
получилось следующее:
1 создаем функцию триггера
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Create function date_search() returns trigger AS '
declare
    date date;
begin
        IF
            date=''''
                then
                    date := NULL;
        end if;
        RETURN date;
end;
' LANGUAGE 'plpgsql';


2 создаем триггер
Код: sql
1.
2.
3.
CREATE TRIGGER date_search_trigger
BEFORE INSERT OR UPDATE ON globus.search
FOR EACH ROW EXECUTE PROCEDURE date_search();


но не очень мне понятно как при вставке значений в таблицу, пустые значения будут меняться на NULL (или обратно). где должен быть критерий, когда должен сработает триггер. помогите пожалуйста разобраться.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38647002
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал на plperl триггер, вот такого содержания:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Create function date() returns trigger AS $$
if ($_TD->{new}{date} = ' ') {
				$_TD->{new}{date} = undef;
				return "MODIFY";
                                } else {return;}
$$ LANGUAGE 'plperl';

CREATE TRIGGER date_text
BEFORE INSERT OR UPDATE ON test
FOR EACH ROW EXECUTE PROCEDURE date_search();


но почему то теперь все значения даты которые были пустые легли в базу, все остальные нет (те которые до триггера ложились без проблем). в логе - не правильный тип даты.
где ошибка понять не могу.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38647160
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
самое интересное, что если тип данных БД поменять с date на vchar то триггер правельно работает. а если тип данных date то замены значения не происходит (сдается мне, что сравнение не правильно сделано). уже мозг себе сломал, не знаю где ошибка и почему так происходит.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38647307
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
evgen25, вы прикалываетесь? что такое дата? как дата может быть пустой и при этом не быть NULL?
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38647998
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V&N,
меня очень сильно раздражают люди, которые пишут ради того что бы по умничать! если бы не было такой проблемы, я бы её героически не преодолевал. еще раз объясняю. заполнение в БД идет из файла xls. так вот. когда событие не произошло или человек по каким то причинам не записал дату события в файл, там остается пустое значение. это значение не является NULL.
есть файл там допустим 5 столбцов. запускается парсер который считывает эти значения и заносит в базу. так вот. если я значение не определю (т.е. не сделаю my $a= такому то столбцу в файле) то значение в БД считается NULL. если переменная определена, но в этом столбце файла пусто, то это пусто и заносится в БД. и это пусто выглядет в логе БД так:
Код: sql
1.
2.
ОШИБКА:  неверный синтаксис для типа date: ""
ОПЕРАТОР:  INSERT INTO .........


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

если написать в парсере так:
Код: sql
1.
if ($a eq '') {$a=undef;}


тогда таких записей не возникает в файлах журнала БД. вот и делаю в одном месте определяю как $a=undef; а в другом как my $a=''; (когда мне не нужно значение NULL в базе)
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648018
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
evgen25...ОШИБКА: неверный синтаксис для типа date : ""
ОПЕРАТОР: INSERT INTO .........
...
Меняйте тип данных на строку или исправляйте данные перед вставкой.
триггер тут не причем.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648033
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V&N,

странно. я надеялся триггером эту проблему решить. понять не могу. если я делаю тоже самое в парсере, то все отлично работает. если я меняю тип данных на vchar то тоже отлично все работает. а вот при комбинации триггре + тип данных date уже не работает. вопрос почему?
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648052
дедпихто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgen25,

потому что ты судак, т.е. тудак, т.е. чудак
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648077
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дедпихто,

очень интересно получается. захожу на форум со своей проблемой. с людьми посоветоваться. получают ответ, второй пишет тебе это не поможет. третий вообще мудаком обозвал. а может му**к это вы? т.к. по делу ничего не можете сказать, а по умничать надо. заняться то нечем вот и мудачите по форумам. это во первых. а во вторых не ты а Вы. еще и хорошим манерам родители не научили и не до любили. одни понты, а по делу 0!
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648142
/\/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgen25,

Все по делу. Упомянутые Вами три оратора высказались четко и по существу. Это не отменяет того, что они (и даже я) могут быть не менее сказочными чудаками. Но проблемы именно у Вас. И решаются именно чудесатым способом.

Теперь по существу:
До тех пор, пока не прочитаете оригинальную документацию, ничего у Вас не получится. База - это игрушка для взрослых, то есть для тех, кто умеет хотя бы читать.
Назвать собеседника мчудаком - один из самых действенных дистанционных способов заставить прочитать доку. Еще более действенный - пендель - требует личного присутствия.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648213
дедпихто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgen25V&N,
меня очень сильно раздражают люди, которые пишут ради того что бы по умничать!<>
поумничать в данном случае пишется слитно. (выбросьте спеллчекер, он вам не поможет, ибо написан такими же тудаками)
а "по-бабьи", через дефис

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

ты, деточка, скольки лет от роду будешь? неужто полнах адцатипьятьи ?

ну и потом будем педантами: вас тут назвали тудаком, судаком и чудаком, а на буковицу эм вы назвались уже сами. шапочка, очевидно, нагрела.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648489
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25V&N,

странно. я надеялся триггером эту проблему решить.
...
а вот при комбинации триггре + тип данных date уже не работает. вопрос почему?

Ваша проблема состоит в языке по имени Perl.
И, прочитав весь новый тред, можно сказать, что судаком вас обозвали не зря.

Конкретнее:
В перле типизация отсутствует как принцип. Любому скаляру можно присвоить любой скаляр. В СУБД это СОВСЕМ НЕ ТАК
. Так что если пишите в форум по СУБД по тригерам по СУБД - будьте любезны, заботайте принцип строгой типизации , применяемый во всех языках программирования, кроме (на вскидку) Perl и PHP.
И не будьте судаком.
...
Рейтинг: 0 / 0
разработка БД для автопредприятия.
    #38648494
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25V&N,

странно. я надеялся триггером эту проблему решить. понять не могу. если я делаю тоже самое в парсере, то все отлично работает.

Специально выделил. Парсер работает на чистом перле, pgperl - внутри СУБД. Ботать принципы СУБД, начиная с типизации.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / разработка БД для автопредприятия.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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