Страница 1 из 1
Access. SQL2000. Primary Key
Добавлено: 21 окт 2009, 11:23
Putincev
При импортировании таблиц из одной БД в другую теряются ключевые поля. Для их назначения я написал процедуру:
Set adoxTbl = New ADOX.Table
Set adoxCat = New ADOX.Catalog
adoxCat.ActiveConnection = CurrentProject.Connection
For Each adoxTbl In adoxCat.Tables
FormName = adoxTbl.Name
If Left(FormName, 4) = "tblР" Then
SQL_Vybor = "ALTER TABLE " & FormName & " " & _
"Add " & _
"CONSTRAINT PK_" & FormName & " PRIMARY KEY CLUSTERED (ID)"
DoCmd.RunSQL SQL_Vybor
End If
Next
Но если в поле параметр "Разрешить Null" включен, то поле не назначается.
Как программно отключить этот параметр?
Заранее благодарю, Андрей Путинцев
Re: Access. SQL2000. Primary Key
Добавлено: 21 окт 2009, 11:39
atavin-ta
Примари кэем называется атрибут, идентифицирующий запись. Если он пуст, то запсиь нечем идентифицировать, но если в таблице назначен примари кэй, то каждая запись должна иметь уникальный идентификатор. Так что ты спроил: "как сделать примари кэй так, чтоб он не был примари кэем?". Бред.
Re: Access. SQL2000. Primary Key
Добавлено: 21 окт 2009, 15:20
mc-black
1. Не надо создавать первичный ключ, если уникальность данных в новой аблицу по полю не гарантируется.
2. Можно в ALTER TABLE использовать выражение 'NOT NULL', для поля, когда пустые значения не допускаются. Таким полям ненужно быть индексами, чтобы это работало.
Re: Access. SQL2000. Primary Key
Добавлено: 21 окт 2009, 17:39
Putincev
mc-black писал(а):1. Не надо создавать первичный ключ, если уникальность данных в новой аблицу по полю не гарантируется.
2. Можно в ALTER TABLE использовать выражение 'NOT NULL', для поля, когда пустые значения не допускаются. Таким полям ненужно быть индексами, чтобы это работало.
Вообще-то не понимаю почему, но если в тбл нет ключевого поля, то программа дает ошибки. Поэтому у меня во всех тбл есть поле ID, которое я и назначаю ключевым. В основном это поле является счетчиком (Идентификация = Да) и заполняется автоматически (с ними проблем нет), но в части тбл (Идентификация = Нет) и заполняю я это поле сам, причем, в нем тоже значение повторить нельзя, так вот с ними проблема, о которой я писал.
Я пробовал вставлять NOT NULL, но видно не туда вставлял

), если можно, то уточните место его в запросе и синтаксис написания
Re: Access. SQL2000. Primary Key
Добавлено: 22 окт 2009, 11:07
mc-black
Синтаксис написания ALTER TABLE из справки по MS Access
Синтаксис
ALTER TABLE таблица {ADD {COLUMN тип поля[(размер)] [NOT NULL] [CONSTRAINT индекс] |
ALTER COLUMN тип поля[(размер)] |
CONSTRAINT составнойИндекс} |
DROP {COLUMN поле I CONSTRAINT имяИндекса} }
Ниже перечислены аргументы инструкции ALTER TABLE:
Элемент Описание
таблица Имя изменяемой таблицы.
поле Имя поля, добавляемого в таблицу или удаляемого из нее. Имя поля, заменяемого в таблице.
тип Тип данных поля.
размер Размер поля в знаках (только для текстовых и двоичных полей).
индекс Индекс для поля. Для получения более подробных сведений о создании индекса смотрите описание предложения CONSTRAINT.
составнойИндекс Описание составного индекса, добавляемого к таблице. Для получения более подробных сведений о создании индекса смотрите описание предложения CONSTRAINT.
имяИндекса Имя составного индекса, который следует удалить.
Почему бы Вам не научиться находить информацию в файлах справки на собственном компьютере? Помогает!
Мой вам совет: если вы не знаете, что такое Primary Key и нормализация баз данных, лучше не создавайте НИКАКИХ ключей и индексов, при этом сможете хоть какими-то таблицами как-то манипулировать. А вообще Вам надо подтягивать теорию, иначе специалистом по БД никогда не станете.
Re: Access. SQL2000. Primary Key
Добавлено: 23 окт 2009, 09:12
Putincev
mc-black писал(а):Синтаксис написания ALTER TABLE из справки по MS Access
Почему бы Вам не научиться находить информацию в файлах справки на собственном компьютере? Помогает!
Мой вам совет: если вы не знаете, что такое Primary Key и нормализация баз данных, лучше не создавайте НИКАКИХ ключей и индексов, при этом сможете хоть какими-то таблицами как-то манипулировать. А вообще Вам надо подтягивать теорию, иначе специалистом по БД никогда не станете.
Спасибо за ответ и особенно за совет, Вы абсолютно правы!