Учитывая, что это используемый , необходимо было бы доверять пользователям очереди;-)
Вы можете использовать процесс OTP gen_supervisor для отслеживания экземпляров Haskell, которые вы создаете с помощью open_port (). В зависимости от того, как «порт» завершился, вы сможете перезапустить его или решить, что он остановлен специально, и позволить соответствующему процессу Erlang умереть тоже.
Fugheddaboudit. Даже эти независимые от языка виртуальные машины, о которых вы говорите, иногда имеют проблемы с передачей данных между языками. Вы должны просто каким-то образом сериализовать данные между ними: база данных, XML-RPC, что-то в этом роде.
Между прочим, идея единой платформы на всю оставшуюся жизнь, вероятно, также непрактична. Вычислительные технологии и мода меняются слишком часто, чтобы можно было ожидать, что вы всегда сможете использовать только один язык. Ваш вопрос указывает на это: ни один язык не делает все, что мы хотели бы, даже сегодня.
за исключением того, что имя не может начинаться со знака числа (#). Если имя_ограничения не указано, ограничению назначается имя, сгенерированное системой.Сравните это с именем индекса :
Имя индекса. Имена индексов должны быть уникальными в таблице или представлении, но не обязательно в базе данных. Имена индексов должны соответствовать правилам идентификаторов.
, что явно сужает область действия идентификатора.
Я всегда был озадачен , почему имена ограничений должны быть уникальными в базе данных, поскольку кажется, что они связаны с таблицами.
Затем я прочитал об ограничении ASSERTION
SQL-99, которое похоже на ограничение проверки, но существует отдельно от любой отдельной таблицы. Условия, объявленные в утверждении, должны выполняться последовательно, как и любое другое ограничение, но утверждение может ссылаться на несколько таблиц.
AFAIK ни один поставщик SQL не реализует ограничения ASSERTION
. Но это помогает объяснить, почему имена ограничений охватывают всю базу данных.
Хорошей практикой является создание имен индекса и ограничений с указанием имени таблицы в начало. Существует 2 подхода, с типом индекса / ограничения в начале или в конце) например.
UQ_TableName_FieldName
или
TableName_FieldName_UQ
Имена внешних ключей также должны содержать имена ссылочных таблиц / полей.
Одно из хороших соглашений об именах состоит в том, чтобы давать имена таблиц в форме FullName_3LetterUniqueAlias, например.
Employers_EMR
Employees_EMP
BankAccounts_BNA
Banks_BNK
Это дает вам возможность использовать «предопределенные» псевдонимы в запросах, что улучшает читаемость, а также упрощает именование внешних ключей, например:
EMPEMR_EmployerCode_FK
BNKEMR_EmployerCode_FK