Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2018, 00:02   #1
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
По умолчанию Cannot insert the value NULL into column

Написал SQL запрос, запрос то верный, но Sql выдаёт на него ошибку, вот что за запрос :

BEGIN
DECLARE @Serial int, @new_Serial int, @serial_pers int, @Race int, @Rank int, @PvP_Point float, @GuildSerial int, @GuildName varchar(50), @Lv int;
SELECT @Serial = Serial FROM RF_World.dbo.tbl_patriarch_elect WHERE ProcType = 2
SELECT @new_Serial = @Serial -1
SELECT @serial_pers = rf_world.dbo.tbl_general.Serial FROM rf_world.dbo.tbl_general, rf_world.dbo.tbl_base WHERE tbl_general.Serial = tbl_base.AccountSerial AND tbl_base.Name = 'АНТИХАЙП'
SELECT @Race = Race FROM RF_World.dbo.tbl_base WHERE Name = 'АНТИХАЙП'
SELECT @Rank = Rank FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
SELECT @PvP_Point = PvpPoint FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
SELECT @GuildSerial = GuildSerial FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
SELECT @GuildName = GuildName FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
SELECT @Lv = Lv FROM RF_World.dbo.tbl_base WHERE Name = 'АНТИХАЙП'
UPDATE RF_World.dbo.tbl_patriarch_candidat e SET Race=@Race, Lv=@Lv, Rank=@Rank, PvpPoint=@PvP_Point, ASerial=@serial_pers, AName='АНТИХАЙП', GSerial=@GuildSerial, GName=@GuildName WHERE eSerial = @new_Serial AND Race = 0 AND ClassType = 0
END;

sql пометил слово Rank розовым цветов, ну не знаю почему и пишет ошибку :
Msg 515, Level 16, State 2, Line 12
Cannot insert the value NULL into column 'Rank', table 'RF_World.dbo.tbl_patriarch_candida te'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

что не так?)

Последний раз редактировалось Аватар; 04.02.2018 в 00:16.
Император97 вне форума Ответить с цитированием
Старый 04.02.2018, 00:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Видимо потому, что в @Rank NULL, а поле tbl_patriarch_candidat.Rank NOT NULL
А о таком формате не слышал
Код:
SELECT @Race = Race, @Rank = Rank,... FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
ОТ Null он не спасет, но короче же. От NULL спасет функция ISNULL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2018, 01:03   #3
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Видимо потому, что в @Rank NULL, а поле tbl_patriarch_candidat.Rank NOT NULL
А о таком формате не слышал
Код:
SELECT @Race = Race, @Rank = Rank,... FROM RF_World.dbo.tbl_PvpRankToday WHERE name = 'АНТИХАЙП'
ОТ Null он не спасет, но короче же. От NULL спасет функция ISNULL
у обоих стоит Allow Nulls = No , значение на выходе то не нулевое должно быть...
ISNULL вроде для того чтобы занулить значение,если оно NULL?
Император97 вне форума Ответить с цитированием
Старый 04.02.2018, 07:29   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
значение на выходе то не нулевое должно быть
а если в tbl_PvpRankToday нет строки с name = 'АНТИХАЙП' ?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2018, 15:36   #5
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
а если в tbl_PvpRankToday нет строки с name = 'АНТИХАЙП' ?
Есть такая,решил проще, из другой таблицы нашёл где вытащить Ранг, Большое спасибо, что уделили время моей проблеме и всё время помогаете.

подскажите ещё один вопрос, а как можно написать запрос,есть вообщем такой запрос :
INSERT INTO RF_User.dbo.tbl_StaffAccount (ID,PW,Grade,Depart,RealName,LastCo nnIP,CreateDT,LastLoginDT,LastLogof fDT,TotalLogMin,SubGrade,ExpireDT,C omClass,BirthDay) VALUES (@login,@pass,@Grade,none,none,0,20 18-01-01,1990-01-01,1990-01-01,0,@SubGrade,(DATE_ADD(CURDATE()I NTERVAL @Srok MONTH)),GM,None)

ExpireDT = Срок до которого работает аккаунт, соответственно хочу вынести поле @Srok для указания количества месяцев работы,но что то написал не так , как можно записать запрос,чтобы к текущей дате добавлялось определенное количество месяцев?
Император97 вне форума Ответить с цитированием
Старый 04.02.2018, 16:06   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
DATEADD(month,@Srok,GETDATE())
Цитата:
из другой таблицы нашёл где вытащить Ранг
А разобраться что было не так в исходном варианте слабо?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.02.2018 в 16:11.
Аватар вне форума Ответить с цитированием
Старый 04.02.2018, 16:39   #7
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
DATEADD(month,@Srok,GETDATE())
А разобраться что было не так в исходном варианте слабо?
Msg 8116, Level 16, State 1, Line 1
Argument data type varchar is invalid for argument 2 of dateadd function.

Что то не нравится ему))
Император97 вне форума Ответить с цитированием
Старый 04.02.2018, 16:39   #8
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
По умолчанию

Пробовал и другие значения из таблицы брать - он ничего не выводит именно из неё почему то.. Sql не силён для меня
Император97 вне форума Ответить с цитированием
Старый 04.02.2018, 16:55   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Sql не силён для меня
Притворство, научись сообщения об ошибке переводить и забивать в гугл простейшие вопросы. Например MS SQL DATEADD
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему-то таблица "неперспективные товары" пустая получается, не понимаю почему chet chou Microsoft Office Access 1 11.05.2017 19:19
Почему 0.01+0.06 не 0.07 SeRhy JavaScript, Ajax 2 30.05.2015 19:48
Здравствуйте ! в чем проблема,почему почему время исполнения операций не работает ? ion leahu Помощь студентам 6 23.11.2014 19:36
Почему? С++ xitrec1zaraza Помощь студентам 5 15.03.2011 20:02
Почему? Sota О форуме и сайтах клуба 4 26.07.2007 16:26