Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 04.02.2018, 01:02   #1
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
Репутация: 10
По умолчанию 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 в 01:16.
Император97 вне форума   Ответить с цитированием
Старый 04.02.2018, 01:14   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,937
Репутация: 6285
По умолчанию

Видимо потому, что в @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, 02:03   #3
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Видимо потому, что в @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, 08:29   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,937
Репутация: 6285
По умолчанию

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
а если в 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, 17:06   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,937
Репутация: 6285
По умолчанию

Код:

DATEADD(month,@Srok,GETDATE())

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

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:

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, 17:39   #8
Император97
Пользователь
 
Регистрация: 30.01.2018
Сообщений: 13
Репутация: 10
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


19:53.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru