pg_constraint.h
来自「PostgreSQL7.4.6 for Linux」· C头文件 代码 · 共 186 行
H
186 行
/*------------------------------------------------------------------------- * * pg_constraint.h * definition of the system "constraint" relation (pg_constraint) * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $Id: pg_constraint.h,v 1.9 2003/08/08 21:42:32 momjian Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki * information from the DATA() statements. * *------------------------------------------------------------------------- */#ifndef PG_CONSTRAINT_H#define PG_CONSTRAINT_H/* ---------------- * postgres.h contains the system type definitions and the * CATALOG(), BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- *//* ---------------- * pg_constraint definition. cpp turns this into * typedef struct FormData_pg_constraint * ---------------- */CATALOG(pg_constraint){ /* * conname + connamespace is deliberately not unique; we allow, for * example, the same name to be used for constraints of different * relations. This is partly for backwards compatibility with past * Postgres practice, and partly because we don't want to have to * obtain a global lock to generate a globally unique name for a * nameless constraint. We associate a namespace with constraint * names only for SQL92 compatibility. */ NameData conname; /* name of this constraint */ Oid connamespace; /* OID of namespace containing constraint */ char contype; /* constraint type; see codes below */ bool condeferrable; /* deferrable constraint? */ bool condeferred; /* deferred by default? */ /* * conrelid and conkey are only meaningful if the constraint applies * to a specific relation (this excludes domain constraints and * assertions). Otherwise conrelid is 0 and conkey is NULL. */ Oid conrelid; /* relation this constraint constrains */ /* * contypid links to the pg_type row for a domain if this is a domain * constraint. Otherwise it's 0. * * For SQL-style global ASSERTIONs, both conrelid and contypid would be * zero. This is not presently supported, however. */ Oid contypid; /* domain this constraint constrains */ /* * These fields, plus confkey, are only meaningful for a foreign-key * constraint. Otherwise confrelid is 0 and the char fields are * spaces. */ Oid confrelid; /* relation referenced by foreign key */ char confupdtype; /* foreign key's ON UPDATE action */ char confdeltype; /* foreign key's ON DELETE action */ char confmatchtype; /* foreign key's match type */ /* * VARIABLE LENGTH FIELDS start here. These fields may be NULL, too. */ /* * Columns of conrelid that the constraint applies to */ int2 conkey[1]; /* * If a foreign key, the referenced columns of confrelid */ int2 confkey[1]; /* * If a check constraint, nodeToString representation of expression */ text conbin; /* * If a check constraint, source-text representation of expression */ text consrc;} FormData_pg_constraint;/* ---------------- * Form_pg_constraint corresponds to a pointer to a tuple with * the format of pg_constraint relation. * ---------------- */typedef FormData_pg_constraint *Form_pg_constraint;/* ---------------- * compiler constants for pg_constraint * ---------------- */#define Natts_pg_constraint 15#define Anum_pg_constraint_conname 1#define Anum_pg_constraint_connamespace 2#define Anum_pg_constraint_contype 3#define Anum_pg_constraint_condeferrable 4#define Anum_pg_constraint_condeferred 5#define Anum_pg_constraint_conrelid 6#define Anum_pg_constraint_contypid 7#define Anum_pg_constraint_confrelid 8#define Anum_pg_constraint_confupdtype 9#define Anum_pg_constraint_confdeltype 10#define Anum_pg_constraint_confmatchtype 11#define Anum_pg_constraint_conkey 12#define Anum_pg_constraint_confkey 13#define Anum_pg_constraint_conbin 14#define Anum_pg_constraint_consrc 15/* Valid values for contype */#define CONSTRAINT_CHECK 'c'#define CONSTRAINT_FOREIGN 'f'#define CONSTRAINT_PRIMARY 'p'#define CONSTRAINT_UNIQUE 'u'/* * Valid values for confupdtype and confdeltype are the FKCONSTR_ACTION_xxx * constants defined in parsenodes.h. Valid values for confmatchtype are * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. *//* * Used for constraint support functions where the * and conrelid, contypid columns being looked up */typedef enum CONSTRAINTCATEGORY{ CONSTRAINT_RELATION, CONSTRAINT_DOMAIN, CONSTRAINT_ASSERTION} CONSTRAINTCATEGORY;/* * prototypes for functions in pg_constraint.c */extern Oid CreateConstraintEntry(const char *constraintName, Oid constraintNamespace, char constraintType, bool isDeferrable, bool isDeferred, Oid relId, const int16 *constraintKey, int constraintNKeys, Oid domainId, Oid foreignRelId, const int16 *foreignKey, int foreignNKeys, char foreignUpdateType, char foreignDeleteType, char foreignMatchType, Oid indexRelId, Node *conExpr, const char *conBin, const char *conSrc);extern void RemoveConstraintById(Oid conId);extern bool ConstraintNameIsUsed(CONSTRAINTCATEGORY conCat, Oid objId, Oid objNamespace, const char *cname);extern char *GenerateConstraintName(CONSTRAINTCATEGORY conCat, Oid objId, Oid objNamespace, int *counter);extern bool ConstraintNameIsGenerated(const char *cname);#endif /* PG_CONSTRAINT_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?