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

Откуда:
Сообщений: 657
привет
есть таблица - 5 полей
можно ли чтобы клиент делал insert и передавал 7 полей
нужно чтобы вставлялись те поля которые есть - остальные игнорировались и не возникало ошибки

например
tbl
a1 a2 a3 a4 a5

insert into tbl (a1,a2,a3,a4,a5,a6,a7) values (1,2,3,4,5,6,7)
Спасибо
10 июн 16, 12:17    [19279893]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Естественно нельзя.
Можно создать представление с фейковыми столбцами и триггером instead of insert. И вставлять в него.
10 июн 16, 12:35    [19280002]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
лучше через ХП с дефолтными параметрами
10 июн 16, 12:36    [19280010]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
Alexander_fx
Member

Откуда:
Сообщений: 657
Konst_One
лучше через ХП с дефолтными параметрами


тут засада что полей меньше чем данных
10 июн 16, 12:46    [19280065]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Alexander_fx,

ну так в хп и сделайте свои левые параметры, а в инсерт то что нужно
10 июн 16, 12:48    [19280082]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
o-o
Guest
Alexander_fx
Konst_One
лучше через ХП с дефолтными параметрами


тут засада что полей меньше чем данных

invm уже написал решение, где полей больше, чем надо.
вы игнорируете...
create table dbo.tbl1(a1 int, a2 int, a3 int, a4 int, a5 int);
go

create view dbo.tbl
as 
   select a1,a2,a3,a4,a5, 1 as a6, 1 as a7 
   from dbo.tbl1
go


create trigger dbo.tbl_ioi_tr on dbo.tbl instead of insert
as
   insert into dbo.tbl1(a1,a2,a3,a4,a5) 
   select a1,a2,a3,a4,a5
   from inserted;
go

insert into tbl (a1,a2,a3,a4,a5,a6,a7) 
values (1,2,3,4,5,6,7);

select *
from dbo.tbl1;
10 июн 16, 12:49    [19280089]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
Alexander_fx
Member

Откуда:
Сообщений: 657
o-o,

спасибо - все понятно кроме create view dbo.tbl
зачем это?
10 июн 16, 12:55    [19280129]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
o-o
Guest
ну так свою таблицу прячете под другим именем,
не могут же быть таблица и вьюха с одинаковыми именами.
приложение думает, что вставляет в таблицу с исходным именем tbl.
т.е. его код вы не меняете.
но вставляет оно теперь во вью tbl,
вернее, через него в нужную таблицу tbl1
10 июн 16, 13:02    [19280165]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
Alexander_fx
Member

Откуда:
Сообщений: 657
o-o,

Большое спасибо за развернутый ответ
10 июн 16, 13:39    [19280396]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Alexander_fx,

Если остановитесь на варианте с представлением, создавайте его с опцией view_metadata.
10 июн 16, 13:51    [19280487]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли в Insert передавать больше полей чем есть в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Хороший клиент вообще не ложен видеть таблицы напрямую, поэтому
автор
лучше через ХП с дефолтными параметрами

Это вопросы архитектуры.
10 июн 16, 14:52    [19280876]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить