|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.04.2011, 21:11 | #1 |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
значение по умолчанию
Есть некоторая таблица, в которую вводятся 4 строки:
CREATE TABLE Песня_из_альбома ( код_общ integer NOT NULL PRIMARY KEY, длител float, номер integer NOT NULL, код_песни integer REFERENCES Песня (код_песни), код_альб integer REFERENCES Альбом (код_альб) ); INSERT INTO Песня_из_альбома VALUES (3001,5.35,3,2008,1002); INSERT INTO Песня_из_альбома VALUES (3003,2.55,7,2001,1001); INSERT INTO Песня_из_альбома VALUES (3007,0,0,2004,1004); INSERT INTO Песня_из_альбома VALUES (3005,2.23,5,2003,1007); номер, заданный 0, нужно установить ПО УМОЛЧАНИЮ в 1. По идее должно выглядеть как-то так: ALTER TABLE Песня_из_альбома modify (номер integer DEFAULT 1); ....но такой вариант не прокатывает - 0 в 1 не переходит. Мб и не должен?
"...Before you accuse me take a look at yourself..."
|
14.04.2011, 22:00 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Триггер пишите если СУБД позволяет
UPD Может прокатит если есть DEFAULT INSERT INTO Песня_из_альбома (код_общ,длител,код_песни,код_альб) VALUES (3005,2.23,2003,1007);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 14.04.2011 в 22:04. |
14.04.2011, 22:11 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
напишите так: Код:
и ещё, разные СУБД имеют чуть различный синтаксис - поэтому лучше указывать, какая именно у Вас СУБД. и последнее, использование русских названий в именах таблиц и полей - вполне возможно нехорошо аукнется... (да и выглядит устращающе). Я бы, как ретроград и консерватор, не рекомендовал Вам использовать подобные штучки. Даже если СУБД это и позволяет... |
|
14.04.2011, 22:41 | #4 |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
СУБД позволяет, т.к. это Oracle, но в данной лабе триггеров быть не должно, т.е. они не планировались преподом, поэтому наличие триггера не очень желательно. Скажем так, это вариант, выходящий за рамки лабы
все равно спасибо за помощь!
"...Before you accuse me take a look at yourself..."
Последний раз редактировалось T(h)rasher; 14.04.2011 в 22:45. |
14.04.2011, 22:44 | #5 | |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
Цитата:
СУБД Oracle насчет русских названий полностью согласен, но насколько мне известно, они мешать не должны. Хотя их использование действительно не желательно, эт я сильно ступил. Да и основная проблема заключается в третьей строке, где 0 стоит в поле номера...со всеми остальными все ок спасибо за помощь!
"...Before you accuse me take a look at yourself..."
|
|
15.04.2011, 11:10 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
С чего Вы решили, что 0 (НОЛЬ) - это ОТСУТСТВИЕ значения?! Если Вы пишете в БД ноль, то туда должен быть записан ноль! Ещё не хватало, чтобы всякая тупая СУБД за меня решала, хочу я какое-то значение туда записать или не хочу! |
|
15.04.2011, 13:17 | #7 |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
Т.е. вы хотите сказать, что записав в БД ноль как я это сделал, изменить его на единицу по умолчанию невозможно?
"...Before you accuse me take a look at yourself..."
|
15.04.2011, 13:52 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Вы - можете. А ещё можно с помощью триггеров реализовать подобный механизм. С помощью механизма "значение по умолчанию" подобную логику организовать нельзя. (imho, разумеется!) Но можно сделать так, как я писал в пост #3 (т.е. просто выкинуть этот ноль (вместе с полем номер). И тогда СУБД подставить вместо отсутствующего значения значение по умолчанию. Последний раз редактировалось Serge_Bliznykov; 15.04.2011 в 13:55. |
|
16.04.2011, 14:01 | #9 | |
Пользователь
Регистрация: 24.09.2010
Сообщений: 46
|
Цитата:
INSERT INTO Песня_из_альбома VALUES (3007,0,0,2004,1004); , я должен сделать так: INSERT INTO Песня_из_альбома VALUES (3007,0,2004,1004); ALTER TABLE Песня_из_альбома modify (номер integer DEFAULT 1); И тогда значение в поле номер в таблице будет равно 1?
"...Before you accuse me take a look at yourself..."
|
|
16.04.2011, 14:46 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
DEFAULT значение СУБД использует только при вставке и при отсутствии явного присваивания в это поле. Т.е.:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 16.04.2011 в 14:49. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
какое значение переменной integer по умолчанию? | vitaliy1911 | Общие вопросы Delphi | 11 | 25.05.2010 14:36 |
Как установить значение по умолчанию в dropdown | notna | Microsoft Office Word | 2 | 13.04.2010 17:15 |
Значение поля по умолчанию | alco84 | Microsoft Office Access | 2 | 16.02.2010 10:17 |
Как добавить "значение по умолчанию" в базе Access? | bafy | БД в Delphi | 6 | 13.02.2009 12:29 |
Как вставить значение в список по умолчанию | mogul82 | HTML и CSS | 3 | 28.12.2008 17:10 |