|
|
|
| И у меня еще один вопрос:
Скажите, как в MySQL задаются внешние ключи?
Я так понял, что PRIMARY KEY (smth) задает первичный ключ, а в скобках пишется имя ряда.
KEY - ? Объясните пожалуйста поподробней, что пишется в скобках, а что перед/после
Заранее извиняюсь за вопрос - просто не у кого спросить | |
|
|
|
|
|
|
|
для: Dima1999
(20.08.2005 в 17:25)
| | При создании таблицы можно указывать какой стольбец будет использоваться с первичным ключом.
Записи с таблице с первичным ключом уникальны, т.е. они никогда не повторяються.
а задаются они так(например числовой тип):
create table nametable
( id int not null auto_increment PRIMARY KEY);
Сдесь id имя столбца, int - указывает что записи в таблице буду челыми числами, not null - указывает что строки должны ОБЯЗАТЕЛЬНО имет значение, auti_increment - спец. функция мускула, котораяя автоматом генерирует значение значение уникального идентифкатора,значения будут на единицу больше того предыдущего числа(кстати ее мона применять только к числовым стольбцам) и PRIMARY KEY - указывает что столбец является первичным ключом таблицы, записи должны быть уникальны(т.е. не повторятся).
Вроде бы все =)). | |
|
|
|
|
|
|
|
для: Boss
(20.08.2005 в 22:02)
| | Странно, но у меня нельзя задать нескольким столбцам параметр auto_increment - пишет ошибку "There can be only one auto column and it must be defined as a key". " первичных ключа MySQL не берет. Что же делать, если мне нужно, чтобы сразу 2 поля имели такой параметр? | |
|
|
|
|
|
|
|
для: Dima1999
(23.08.2005 в 22:41)
| | К сожалению здесь практически ничего нельзя сделать... а для каких целей нужен второй столбец с атрибутом auto_increment - ведь если есть один столбец, значение второго можно вычислить исходя из значения первого. | |
|
|
|
|
|
|
|
для: cheops
(24.08.2005 в 01:19)
| | Прошу прщения, тут я не то решил сделать. Два столбца с auto_increment - это я загнул, спасибо за все ответы. | |
|
|
|
|
|
|
|
для: Dima1999
(20.08.2005 в 17:25)
| | Внешние ключи задаются при помощи ключевого слова FOREIGN KEY, который можно применять в конце таблицы, как и PRIMARY KEY. Внешние ключи работают только с типом таблиц InnoDB и не работают с остальными типами таблиц, например, MyISAM. Разница имеется - многие участники сообщают о десятикратной разницы в скоростях работы таблиц, в пользу MyISAM (именно этот тип используется по умолчанию везде).
mysql> CREATE TABLE catalogs (
-> id_catalog int(11) NOT NULL auto_increment,
-> name tinytext NOT NULL,
-> PRIMARY KEY (id_catalog)
-> ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
mysql> CREATE TABLE products (
-> id_product int(11) NOT NULL auto_increment,
-> name tinytext NOT NULL,
-> price decimal(7,2) default '0.00',
-> count int(11) default '0',
-> mark float(4,1) NOT NULL default '0.0',
-> description text,
-> id_catalog int(11) NOT NULL default '0',
-> PRIMARY KEY (id_product),
-> FOREIGN KEY (id_catalog) REFERENCES catalogs (id_catalog)
-> ON DELETE CASCADE
-> ON UPDATE CASCADE
-> ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
|
Или вас интересуют не внешние ключи, а обычные индексы, такие как в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=419?
PS Темы, посвящённые СУБД MySQL лучше сразу помещать в специальном разделе, посвящённым данной СУБД http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|