Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 поехали поля при добавлениее новой строки в базу  [new]
Tmin10
Member

Откуда: Нижний Новгород
Сообщений: 67
делаю простейший запрос вида:
INSERT INTO tbl VALUES 
('', '', '1', '1', '', 'tyhrtghg', '1', '', 'true', '', '', '', '', '1', '1', '', '', '', '', '', 'true', '', 'true', '', 'true', '', '', 'true', '', '')

на что mssql ругается, что
mssql
Conversion failed when converting the varchar value 'tyhrtghg' to data type tinyint.

Я подумал, что перепутал поля, но нет, в базе 6 поле имеет тип nvarchar(10), но вот седьмое поле уже имеет вид tinyint, куда и пытается запихнуть mssql значение.
Подскажите, из-за чего это может быть и как это избежать, кроме как добавить в INSER перечисление полей?
21 мар 12, 11:47    [12286580]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
iljy
Member

Откуда:
Сообщений: 8711
Tmin10,

первое поле может быть IDENTITY
21 мар 12, 11:49    [12286597]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
Tmin10
Member

Откуда: Нижний Новгород
Сообщений: 67
iljy
первое поле может быть IDENTITY

да, всё верно, посмотрел в свойствах, а что в этом случае нужно делать чтобы добавить строку?
21 мар 12, 12:01    [12286696]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2517
Только явно перечислять поля в которые добавляете данные.
21 мар 12, 12:04    [12286712]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
все написано в F1
Guest
Tmin10,

перечисление полей в insert добавить нужно обязательно. их порядок в таблице может уехать легко и просто.
насчет заворачивания всего в кавычки - вернитесь к первым примерам работы с t-sql.

про identity все написано в F1
21 мар 12, 12:07    [12286744]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
Tmin10
Member

Откуда: Нижний Новгород
Сообщений: 67
Всё, понял в чём дело, я просто забыл один параметр из 30 штук, когда база mssql стал ругаться, добавил в начале скобочки для id и из-за этого всё поехало
21 мар 12, 12:14    [12286805]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Александр Спелицин
Только явно перечислять поля в которые добавляете данные.


Ага, типа того...
DECLARE @t TABLE
(
  ProductID int IDENTITY (1,1),
  Name varchar(10),
  Dt datetime
)

INSERT @t VALUES  ('A', '2012-03-19T05:48:20')
INSERT @t VALUES  ('B', '2012-03-19T18:19:01')
INSERT @t VALUES  ('D', '2012-03-20T06:59:00')
INSERT @t VALUES  ('E', '2012-03-20T07:00:00')
21 мар 12, 13:54    [12287913]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SamMan
Александр Спелицин
Только явно перечислять поля в которые добавляете данные.


Ага, типа того...
DECLARE @t TABLE
(
  ProductID int IDENTITY (1,1),
  Name varchar(10),
  Dt datetime
)

INSERT @t VALUES  ('A', '2012-03-19T05:48:20')
INSERT @t VALUES  ('B', '2012-03-19T18:19:01')
INSERT @t VALUES  ('D', '2012-03-20T06:59:00')
INSERT @t VALUES  ('E', '2012-03-20T07:00:00')
Только не так! А вот как, и никак иначе:
DECLARE @t TABLE
(
  ProductID int IDENTITY (1,1),
  Name varchar(10),
  Dt datetime
)

INSERT @t(Name,Dt) VALUES  ('A', '2012-03-19T05:48:20')
INSERT @t(Name,Dt) VALUES  ('B', '2012-03-19T18:19:01')
INSERT @t(Name,Dt) VALUES  ('D', '2012-03-20T06:59:00')
INSERT @t(Name,Dt) VALUES  ('E', '2012-03-20T07:00:00')
21 мар 12, 14:18    [12288143]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
iap
Только не так! А вот как, и никак иначе:


А разницу не поясните? Не в синтаксисе, разумеется, а в конечном результате. Кроме того, обращаю ваше внимание на слово ТОЛЬКО в той реплике, ответом на который являлся мой пост.
21 мар 12, 14:55    [12288580]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
SamMan
iap
Только не так! А вот как, и никак иначе:


А разницу не поясните? Не в синтаксисе, разумеется, а в конечном результате. Кроме того, обращаю ваше внимание на слово ТОЛЬКО в той реплике, ответом на который являлся мой пост.

Если таблица будет перестроена без IDENTITY, то будет беда. Если порядок полей изменится тоже будет беда. Неужель это не очевидно?
21 мар 12, 14:57    [12288602]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
kDnZP
SamMan
пропущено...


А разницу не поясните? Не в синтаксисе, разумеется, а в конечном результате. Кроме того, обращаю ваше внимание на слово ТОЛЬКО в той реплике, ответом на который являлся мой пост.

Если таблица будет перестроена без IDENTITY, то будет беда. Если порядок полей изменится тоже будет беда. Неужель это не очевидно?
И эту беду надо будет умножить на десять, если поменяются местами поля одного и того же типа.
Ибо эта беда проявится с огромной задержкой, когда исправить что-либо будет почти невозможно.
Сервер не сможет распознать такую ситуацию и не даст никакого сообщения об ошибке.
21 мар 12, 15:02    [12288657]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
kDnZP
Если таблица будет перестроена без IDENTITY, то будет беда.


Это еще не беда, а вот если навернется диск на котором вся база - вот тогда... Однако суть момента не в достоверности наших с вами фантазий и смелых допущений, а в том что обсуждается ДОПУСТИМЫЙ синтаксис, т.е. не генерящий syntax error. А НЕ "хороший"/"надежный". Что само по себе тема отличная, но отдельная.

kDnZP
Неужель это не очевидно?


Так вот и я удивляюсь!
21 мар 12, 15:05    [12288687]     Ответить | Цитировать Сообщить модератору
 Re: поехали поля при добавлениее новой строки в базу  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
SamMan, если есть возможность выстрелить себе в ногу, то не значит, что обязательно нужно воспользоваться этой возможностью. Я так думаю.
21 мар 12, 15:13    [12288768]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить