Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Server 2008

делаю

ALTER TABLE table
ALTER COLUMN date 
SET DEFAULT '2009-01-01
'

Получаю:
Incorrect syntax near the keyword 'SET'.

Помогите, пож, я уж устал..
14 авг 09, 14:44    [7539820]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb

Помогите, пож, я уж устал..

А синтаксис в хелпе религия не позволяет уточнить ?
14 авг 09, 14:45    [7539838]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
ну.. из хелпа

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'
14 авг 09, 14:47    [7539871]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
похоже что с типом данных date default value как-то иначе определяется
14 авг 09, 14:51    [7539899]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
хз кроче..
14 авг 09, 14:51    [7539914]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31991
Robb
ну.. из хелпа

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'
Подсказка - в описании синтаксиса символ "палочка вертикальная" означает "ИЛИ" :-)

То, что между "ИЛИ", вместе употреблять нельзя.
14 авг 09, 14:52    [7539917]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb
ну.. из хелпа

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'

Возьмите хелп по MSSQL, а не произвольный
14 авг 09, 14:53    [7539927]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
ппц, кто ж мог додуматься до такого синтаксиса..

ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date 
DEFAULT '2008-01-01' FOR date

да уж.
14 авг 09, 15:17    [7540130]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb
ппц, кто ж мог додуматься до такого синтаксиса..

ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date 
DEFAULT '2008-01-01' FOR date

да уж.

А что такого ппц-вого в этом синтаксисе ?
Он не совпадает в вашими морально-этическими нормами ?
14 авг 09, 15:19    [7540147]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

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

Как-то привычнее так:

ALTER TABLE table
ALTER COLUMN date 
SET DEFAULT '2009-01-01'

Я бы понял если бы можно было написать например так:

ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date, DF_Name 
DEFAULT '2008-01-01' FOR date, 'noname' FOR name

Все же разные базы, желательно делать более универсальный синтаксис в таких простых командах.

:-)
14 авг 09, 15:39    [7540312]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

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

Как-то привычнее так:

Трудно вам будет, с привычками то

А чем
ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date, DF_Name 
DEFAULT '2008-01-01' FOR date, 'noname' FOR name

отличается от
ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date DEFAULT '2008-01-01' FOR date,
ADD CONSTRAINT DF_Name  'noname' FOR name
?
14 авг 09, 15:49    [7540402]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Кстати, как тогда селектить DEFAULT- values из простого селекта?

Например,

SELECT NAME, 
   CASE 
   WHEN (DATE > GETDATE())
   THEN null
   ELSE [color=red][b]DEFAULT_VALUE[/b][/color]
   END
FROM battles
14 авг 09, 15:55    [7540457]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
с чего вы взяли , что такое можно?
14 авг 09, 15:56    [7540465]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb
Кстати, как тогда селектить DEFAULT- values из простого селекта?

Например,

SELECT NAME, 
   CASE 
   WHEN (DATE > GETDATE())
   THEN null
   ELSE [color=red][b]DEFAULT_VALUE[/b][/color]
   END
FROM battles

Вы откуда пришли в MSSQL ?
DEFAULT values - они для команды INSERT, а не для SELECT
14 авг 09, 15:57    [7540478]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

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

Как-то привычнее так:

Трудно вам будет, с привычками то

А чем
ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date, DF_Name 
DEFAULT '2008-01-01' FOR date, 'noname' FOR name

отличается от
ALTER TABLE PRODUCT_TABLE 
ADD CONSTRAINT DF_Product_Date DEFAULT '2008-01-01' FOR date,
ADD CONSTRAINT DF_Name  'noname' FOR name
?


Так можно bulk-ом сразу проставить все defaults одной командой.
14 авг 09, 15:59    [7540503]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb


Так можно bulk-ом сразу проставить все defaults одной командой.

Ваша постановка задачи непонятна
14 авг 09, 16:00    [7540508]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Glory
Robb
Кстати, как тогда селектить DEFAULT- values из простого селекта?

Например,

SELECT NAME, 
   CASE 
   WHEN (DATE > GETDATE())
   THEN null
   ELSE [color=red][b]DEFAULT_VALUE[/b][/color]
   END
FROM battles

Вы откуда пришли в MSSQL ?
DEFAULT values - они для команды INSERT, а не для SELECT


я спрашиваю.. что вместо DEFAULT_VALUE нужно вставить..
14 авг 09, 16:01    [7540515]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Robb
Glory
Robb
Кстати, как тогда селектить DEFAULT- values из простого селекта?

Например,

SELECT NAME, 
   CASE 
   WHEN (DATE > GETDATE())
   THEN null
   ELSE [color=red][b]DEFAULT_VALUE[/b][/color]
   END
FROM battles

Вы откуда пришли в MSSQL ?
DEFAULT values - они для команды INSERT, а не для SELECT


я спрашиваю.. что вместо DEFAULT_VALUE нужно вставить..

Да что хотите, то и вставляйте. Откуда же известно, что вы хотите увидеть в результате своего select-а ?
14 авг 09, 16:02    [7540524]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
сорри,

так:

SELECT NAME, 
   CASE 
   WHEN (DATE > GETDATE())
   THEN DATE
   ELSE DEFAULT_VALUE
   END
FROM A_TABLE
14 авг 09, 16:06    [7540546]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Упс, ошибочка..

SELECT A_FIELD, 
   CASE 
   WHEN (A_DATE <= GETDATE())
   THEN A_DATE
   ELSE DEFAULT_VALUE
   END
FROM A_TABLE
14 авг 09, 16:08    [7540563]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а увидите ві имено то,что отпеделите при потсроение дефолта для столбца, если ві не поменете значенеие в столбце,то подставится то,которое указано в дефолт валую при создании таблицы, и последний кусок кейса вообще значения не имеет
-------------------------------------
Jedem Das Seine
14 авг 09, 16:44    [7540850]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Maxx
а увидите ві имено то,что отпеделите при потсроение дефолта для столбца, если ві не поменете значенеие в столбце,то подставится то,которое указано в дефолт валую при создании таблицы, и последний кусок кейса вообще значения не имеет
-------------------------------------
Jedem Das Seine


"если ві не поменете значенеие в столбце" - не понял..

Вообще не понял мысли, сорри, проясняйте пож-ста.
14 авг 09, 17:18    [7541033]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
То есть, хотите сказать что если условие в кейс не сработало, то покажет дефолтные значения???

Нет, как же.. этого не может быть..

Разве что используя такое..

SELECT * FROM syscolumns WHERE id = object_id('A_TABLE') AND cdefault > 0


Похоже что придется мне эту VALUE захардкодить..
14 авг 09, 17:22    [7541051]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Robb,
Не хардкодить значения дефолтов можно с помощью служебной таблицы для хранения дефолтов и функции:
if object_id('dbo.ColumnDefaultValues', 'U') is not null
 drop table dbo.ColumnDefaultValues
go
create table dbo.ColumnDefaultValues
(
 ColumnName sysname not null,
 Value sql_variant,
 constraint PK_ColumnDefaultValues primary key (ColumnName)
)
go
if object_id('dbo.ufnGetColumnDefaultValue', 'FN') is not null
 drop function dbo.ufnGetColumnDefaultValue
go
create function dbo.ufnGetColumnDefaultValue(@ColumnName sysname)
return sql_variant
as
begin
 declare @result sql_variant
 
 select
  @result = Value
 from
  dbo.ColumnDefaultValues
 where
  ColumnName = @ColumnName
 
 return @result
end
go
Использование:
create table A_TABLE
(
 ...
 A_DATE datetime not null constraint DF_A_TABLE__A_DATE default (cast(dbo.ufnGetColumnDefaultValue(N'A_TABLE.A_DATE') as datetime))
 ...
)

SELECT A_FIELD, 
   CASE 
   WHEN (A_DATE <= GETDATE())
   THEN A_DATE
   ELSE cast(dbo.ufnGetColumnDefaultValue(N'A_TABLE.A_DATE') as datetime)
   END
FROM A_TABLE
14 авг 09, 21:25    [7541739]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near the keyword 'SET'  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
invm
Использование:


Мдя... Вот только что быдет с быстродействием...
14 авг 09, 21:30    [7541743]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить