Default значения полей

Alexander_UA
Дата: 15.10.2005 16:33:49
Есть ли или будет ли когда-то в ADO возможность определить default значения полей для новой записи? Ведь нехорошо же закладывать присвоение этих значений в приложении? А если не присваивать, то до форма редактирования записи выглядит пустой и пользователь не имеет никакой возможности знать, что что-то там имеет Default значение. Это тоже не хорошо, IMHO. Кто как это решает?
Sv219
Дата: 17.10.2005 21:48:05
так значение по дефолту же в АДО есть, примерно так ...
    Dim myCol As DataColumn
    Dim myTable As New DataTable
 
    myCol = New DataColumn
    With myCol
       .DataType = System.Type.GetType("System.String")
       .DefaultValue = "Address"
       .Unique = False
    End With
    myTable.Columns.Add(myCol)
или я не правильно понял вопрос????
Alexander_UA
Дата: 31.10.2005 14:00:07
Неправильно поняли. Я имел в виду реально установленные в БД значения полей.
Например
create table tblCustomer (
CustomerID INT not null,
Name VARCHAR(15) not null,
Gender BIT not null default 0,
Changed DATETIME not null default now(),
constraint PK_CUSTOMER primary key (CustomerID)
)
...
Поле Gender в этом примере имеет default значение 0, а поле Changed - now().
Как наилучшим образом реализовать интерфейс для редактирования указанных полей в новой записи этой таблицы?
1) Можно просто забыть про установки default в БД. При этом пользователь правда будет удивлен тому, то после сохранения записи эти поля изменились, хотя он их значения и не определял.
2) Можно заложить логику присвоения default в приложение. При этом в окне редактирования новой записи пользователь действительно увидет, что некоторые поля уже заполнены предположительными значениями, которые он может затем изменить. Но, у этого подхода есть минус - если по-каким то причинам в БД изменятся условия default, например
Gender BIT not null default 1,
или добавятся новые, то приложение либо будет по прежнему инициализировать Gender для новой записи нулем, либо, для новых default по прежнему не инициализировать эти поля указанными default значениями.
И наконец:
3) Если бы кто-то подсказал, как получать информацию из БД о default, то при создании новой записи приложение сразу бы инициализировало поля default значениями согласно БД. Вот в этом и состоит мой вопрос.
Vadimek
Дата: 01.11.2005 00:26:13
Можно попробовать так :
select COLUMN_NAME,COLUMN_DEFAULT 
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME=N'TableName' 
Alexander_UA
Дата: 02.11.2005 16:14:15
Вот, вот... Но годится этот запрос не для каждой поддерживаемой ADO базы данных. Поэтому у меня и возник такой "крик души", о том, чтобы поддержка требуемой функциональности была заложена в ADO.
Alexander_UA
Дата: 02.11.2005 16:52:03
Можно воспользоваться
recset := ADOConnection.ConnectionObject.OpenSchema(adSchemaColumns, ...)
но на том же MS SQL результат возвращается не для всех пользователей - включается работа системы прав. Но и не давать же права менеджера пользователю только для того, чтобы получить defaults ?
Серж
Дата: 19.02.2007 16:26:12
Дак есть какое-либо штатное средство для решения этой проблемы или нет?
Шыфл
Дата: 19.09.2010 22:47:30
UP

Неужели в LINQ нет способа вставлять в nullable columns значения из default constraint сервера?
veon
Дата: 19.09.2010 23:19:00
создал таблицу MySQL

CREATE TABLE `Account` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nickName` varchar(45) NOT NULL,
  `created` timestamp NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
)

создал по ней модель.

Как заставить ADO.Net не сетить timestamp в БД а прочитать его как и id?

В свойствах поля вижу только Default Value:(None),
Store Generated Pattern - похоже по описанию, но не работает
МСУ
Дата: 20.09.2010 09:45:13