Если Вы хотите такую гранулярность, Вы находитесь в неправильном месте (в пространстве пользователя).
Помнят, что, если Вы находитесь в пространстве пользователя, Ваше время не всегда точно.
планировщик может запустить Ваш поток (или приложение) и запланировать его, таким образом, Вы зависите планировщиком ОС.
при поиске чего-то точного необходимо пойти: 1) В пространстве ядра (как драйверы) 2) Выбирают RTOS.
Так или иначе, если Вы ищете некоторую гранулярность (но помнят проблему с пространством пользователя) смотрят на функцию Функции и QueryPerformanceFrequency QueryPerformanceCounter в MSDN.
Как выполнить преобразование? Возможно, вы забыли связать таблицу стилей XSLT с XML-документом, используя:
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
в начале XML-документа. Подробнее здесь .
Это можно сделать во время создания таблицы или с помощью оператора ALTER. Подробности смотрите в документации. Как указывали другие, обратите внимание, что обе таблицы должны быть таблицами InnoDB (ограничения внешнего ключа не поддерживаются механизмом хранения MyISAM, который их игнорирует).С или без ограничения FK запрос может выглядеть примерно так:
SELECT *
FROM CUSTOMER C, ORDER O
WHERE C.ID = O.CUSTOMER_ID
AND O.ID = ...
Ограничение FK «просто» гарантирует, что столбец CUSTOMER_ID таблицы ORDER не может содержать значений, которых нет в таблице CUSTOMER (кроме потенциально NULL), и, таким образом, обеспечивает ссылочную целостность.
Я предполагаю, что вы спрашиваете, потому что вы читали документацию, и это не имело для вас смысла.
Внешний ключ (FK) - это поле в ТаблицеB, которое содержит то же значение, что и поле, обычно первичный ключ (PK), в TableA. Итак, в псевдокоде:
Create TableA:
A_id is PK,
somefield,
anotherfield
Create TableB:
B_id is PK,
A_id is FK to TableA,
farmfield,
outstandingfield
Create constraint on TableB:
In TableB A_id references TableA(A_id),
Don't allow updates to TableA(A_id),
Delete records from TableB that have the same A_id as deleted records in TableA
Затем, когда вы выполняете запрос, который включает обе таблицы, вы можете присоединиться к своему FK:
SELECT a.somefield, b.farmfield FROM TableA a JOIN TableB b ON (a.A_id=B.A_id);
И когда вы удаляете из TableA, вам не нужно удалять из TableB. Это произойдет автоматически, потому что в ограничении сказано: «Удалите записи из TableB, которые имеют тот же A_id, что и удаленные записи в TableA».
И когда вы вставляете в TableB, вам нужно будет либо указать действительный A_id, либо, в зависимости от как вы определили столбец, оставьте A_id = NULL
.
Внешние ключи в mysql доступны только для определенных механизмов баз данных. MyISAM не является одним из них.
Я попытался использовать их с InnoDB, и хотя он действительно гарантировал согласованность данных, я обнаружил, что это огромное снижение производительности, вызывающее множество заблокированных таблиц, которые должны никогда не были заблокированы.
Основное преимущество использования внешних ключей состоит в том, чтобы быть уверенным, что у вас никогда не будет заказа, в котором нет клиента в базе данных. Но вам все равно потребуется доступ к клиенту по запросу.
select * from customer, order where order.customer_id = customer.id and order.id = 5
Вышеупомянутый запрос показывает вам общее представление о том, как получить к нему доступ через ленивое соединение, хотя он написан сухим кодом, и у меня может быть одна или две опечатки.
Мои общие мысли о внешних ключах заключаются в том, что они хороши, но не могут использоваться в MySQL, и что Postgres обрабатывает их намного лучше.
http: // dev .mysql.com / doc / refman / 5.1 / ru / innodb-foreign-key-constraints.html
Первый результат при поиске «внешнего ключа mysql» в Google. В комплекте с примерами.
Внешние ключи , а не автоматически связываются общими именами. Одна вещь, которая часто сбивает людей с толку относительно внешних ключей MySQL, заключается в том, что механизм таблиц MyISAM (по умолчанию) вообще не поддерживает внешние ключи. Вместо того, чтобы выдавать сообщение об ошибке при добавлении внешнего ключа в таблицу MyISAM, MySQL молча игнорирует определение внешнего ключа. Внешние ключи поддерживаются механизмом таблиц InnoDB, поэтому вы должны убедиться, что все таблицы, в которые вы хотите добавить внешние ключи, относятся к типу таблиц InnoDB. Чтобы добавить внешний ключ, вы делаете что-то вроде этого:
alter table fk_table add foreign key (fk_column) references pk_table (pk_column);