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

Откуда:
Сообщений: 184
Создал таблицу со столбцами
Номер int,
Модель varchar(20),
Марка varchar(20),
Цвет  varchar(20)


Обновляю таблицу вот так :

UPDATE машины
SET Марка = 'Форд', 
      Модель = 'Мондео',   
      Цвет = 'Красный', 
      WHERE Номер = 1


Все отлично обновляется.

Теперь хочу обновить таблицу так чтоб если пользователь не ввел все значения для обновления ,обновились лишь те которые он ввел ,а которые не ввел остались прежними.
Заранее спасибо
17 июн 13, 16:07    [14443108]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
NewBie77
если пользователь не ввел все значения для обновления

Не ввел куда ?
17 июн 13, 16:08    [14443119]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
NewBie77
Создал таблицу со столбцами
Номер int,
Модель varchar(20),
Марка varchar(20),
Цвет  varchar(20)


Обновляю таблицу вот так :

UPDATE машины
SET Марка = 'Форд', 
      Модель = 'Мондео',   
      Цвет = 'Красный', 
      WHERE Номер = 1


Все отлично обновляется.

Теперь хочу обновить таблицу так чтоб если пользователь не ввел все значения для обновления ,обновились лишь те которые он ввел ,а которые не ввел остались прежними.
Заранее спасибо


UPDATE машины
SET Марка = 'Форд', 
      Модель = Модель,   
      Цвет = Цвет, 
      WHERE Номер = 1

Тогда изменится только название марки
17 июн 13, 16:08    [14443123]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Glory
NewBie77
если пользователь не ввел все значения для обновления

Не ввел куда ?

В будущем в процедуре будет это все
17 июн 13, 16:10    [14443147]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
NewBie77
В будущем в процедуре будет это все

И как вы будете определять в этой будущей процедуре, что пользователь (не)ввел ?
17 июн 13, 16:12    [14443168]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Сергей Викт.
NewBie77
Создал таблицу со столбцами
Номер int,
Модель varchar(20),
Марка varchar(20),
Цвет  varchar(20)


Обновляю таблицу вот так :

UPDATE машины
SET Марка = 'Форд', 
      Модель = 'Мондео',   
      Цвет = 'Красный', 
      WHERE Номер = 1


Все отлично обновляется.

Теперь хочу обновить таблицу так чтоб если пользователь не ввел все значения для обновления ,обновились лишь те которые он ввел ,а которые не ввел остались прежними.
Заранее спасибо


UPDATE машины
SET Марка = 'Форд', 
      Модель = Модель,   
      Цвет = Цвет, 
      WHERE Номер = 1

Тогда изменится только название марки

Спасибо за ответ , а как будет в случае процедуры ?
UPDATE машины
SET Марка = @Марка,
Модель = @Мондео,
Цвет = @Красный
WHERE Номер = @Номер
17 июн 13, 16:12    [14443170]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Glory
NewBie77
В будущем в процедуре будет это все

И как вы будете определять в этой будущей процедуре, что пользователь (не)ввел ?

Мне вот это интересно , вы меня извините если я неправильно сформурировал вопрос
17 июн 13, 16:14    [14443184]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
NewBie77
Мне вот это интересно , вы меня извините если я неправильно сформурировал вопрос

Какое значение переменной @Марка говорит о том, что "пользователь не ввел все значения" ?
17 июн 13, 16:15    [14443194]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
NewBie77
Сергей Викт.
пропущено...


UPDATE машины
SET Марка = 'Форд', 
      Модель = Модель,   
      Цвет = Цвет, 
      WHERE Номер = 1

Тогда изменится только название марки

Спасибо за ответ , а как будет в случае процедуры ?
UPDATE машины
SET Марка = @Марка,
Модель = @Мондео,
Цвет = @Красный
WHERE Номер = @Номер

при создании процедуры указываете параметрам значение по умолчанию NULL
CREATE PROCEDURE bla_bla 
@Марка varchar(50) = null,
@Модель varchar(50) = null,
@Цвет varchar(50) = null,
@Номер int=null

ПРИ апдейте пишете:

IF (@номер IS NOT NULL) BEGIN

UPDATE машины
SET Марка = ISNULL(@Марка,Марка), 
      Модель = ISNULL(@Мондео,Модель),   
      Цвет = ISNULL(@Красный,Цвет)
      WHERE Номер = @Номер

END

Думаю, что приблизительно в таком ключе
17 июн 13, 16:16    [14443209]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

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

Я неправильно выразился наверно . Пытаюсь написать процедуру
Где буду обновлять таблицу

UPDATE машины
SET Марка = @Марка, 
Модель = @Мондео, 
Цвет = @Цвет
WHERE Номер = @Номер


Но вот как дать понять если пользователь не ввел значения , остались бы прежние не могу. Если вызову процедуру следующим способом execute proc '','','Красный' то он сотрет значения Марки и Модели и обновит цвет.
17 июн 13, 16:21    [14443246]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
NewBie77
Но вот как дать понять если пользователь не ввел значения , остались бы прежние не могу.

Ну так выберите, какое значение переменной будет "давать понять если пользователь не ввел значения"
17 июн 13, 16:23    [14443254]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
NewBie77
Glory,

Я неправильно выразился наверно . Пытаюсь написать процедуру
Где буду обновлять таблицу

UPDATE машины
SET Марка = @Марка, 
Модель = @Мондео, 
Цвет = @Цвет
WHERE Номер = @Номер


Но вот как дать понять если пользователь не ввел значения , остались бы прежние не могу. Если вызову процедуру следующим способом execute proc '','','Красный' то он сотрет значения Марки и Модели и обновит цвет.


Смотрите на пост выше: 14443209

и Ещё: у Вас пользователь вызывает процедуру из приложения? Или из окна SSMS?
17 июн 13, 16:24    [14443257]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
А для того, чтобы пользователь не мог внести неправильную информацию, создают проверки.
Например, ограничение(constraint) на поле Марка.
17 июн 13, 16:25    [14443266]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Сергей Викт.
NewBie77
Glory,

Я неправильно выразился наверно . Пытаюсь написать процедуру
Где буду обновлять таблицу

UPDATE машины
SET Марка = @Марка, 
Модель = @Мондео, 
Цвет = @Цвет
WHERE Номер = @Номер


Но вот как дать понять если пользователь не ввел значения , остались бы прежние не могу. Если вызову процедуру следующим способом execute proc '','','Красный' то он сотрет значения Марки и Модели и обновит цвет.


Смотрите на пост выше: 14443209

и Ещё: у Вас пользователь вызывает процедуру из приложения? Или из окна SSMS?

из окна SSMS . А как предать значения процедуре ?
17 июн 13, 16:34    [14443361]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
NewBie77
Сергей Викт.
пропущено...


Смотрите на пост выше: 14443209

и Ещё: у Вас пользователь вызывает процедуру из приложения? Или из окна SSMS?

из окна SSMS . А как предать значения процедуре ?


Хм... можно нескромный вопрос: вы первый раз столкнулись с T-SQL?

Почитайте тут: http://msdn.microsoft.com/ru-ru/library/ms187926(v=sql.90).aspx
17 июн 13, 16:35    [14443387]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Сергей Викт.
NewBie77
пропущено...

из окна SSMS . А как предать значения процедуре ?


Хм... можно нескромный вопрос: вы первый раз столкнулись с T-SQL?

Почитайте тут: http://msdn.microsoft.com/ru-ru/library/ms187926(v=sql.90).aspx


Если вызову процедуру следующим способом execute proc '','','Красный' то он сотрет значения Марки и Модели и обновит цвет. Как дать понять что я не хочу обновить все значения ?
17 июн 13, 16:39    [14443432]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
NewBie77
Сергей Викт.
пропущено...


Хм... можно нескромный вопрос: вы первый раз столкнулись с T-SQL?

Почитайте тут: http://msdn.microsoft.com/ru-ru/library/ms187926(v=sql.90).aspx


Если вызову процедуру следующим способом execute proc '','','Красный' то он сотрет значения Марки и Модели и обновит цвет. Как дать понять что я не хочу обновить все значения ?

Я же вам написал выше уже всё..
CREATE PROCEDURE proc
@Марка varchar(50) = null,
@Модель varchar(50) = null,
@Цвет varchar(50) = null,
@Номер int=null
AS
BEGIN
UPDATE 
IF (@номер IS NOT NULL) 

UPDATE машины
SET Марка = ISNULL(@Марка,Марка), 
      Модель = ISNULL(@Мондео,Модель),   
      Цвет = ISNULL(@Красный,Цвет)
      WHERE Номер = @Номер

END

Вызываете также: exec proc '','','Красный',1
либо:
exec proc null,null,'Красный',1
17 июн 13, 16:42    [14443473]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить