Возможно, это помогает, начиная с C99, 7.1.3 («Зарезервированные идентификаторы»):
blockquote>
- Все идентификаторы, начинающиеся с подчеркивания, и буква верхнего регистра или другое подчеркивание всегда зарезервировано для любого использования.
- Все идентификаторы, начинающиеся с символа подчеркивания, всегда зарезервированы для использования в качестве идентификаторов с областью файлов как в обычном, так и в пространстве имен тегов.
Мораль: для обычного кода пользователя, вероятно, лучше не начинать идентификаторы с подчеркиванием.
(В соответствующей заметке, я думаю, вам также следует избегать именования типов с конечным
_t
, который зарезервирован для стандартных типов.)
Используйте information_schema.table_constraints
таблицу, чтобы получить имена ограничений, определенных для каждой таблицы:
select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'
Используйте information_schema. key_column_usage
таблицу, чтобы получить поля в каждом из этих ограничений:
select *
from information_schema.key_column_usage
where constraint_schema = 'YOUR_DB'
Если вместо этого вы говорите об ограничениях внешнего ключа, используйте information_schema.referential_constraints
:
select *
from information_schema.referential_constraints
where constraint_schema = 'YOUR_DB'