/// <summary> /// Set foreign key with options /// </summary> /// <param name="sForeignKeyName">Foreign key name</param> /// <param name="sForeignConstraint">Foreign key body</param> /// <param name="sDescription">Foreign key description</param> /// <param name="options">Option for foreign key</param> /// <returns>True if success</returns> public bool SetForeignKey(string sForeignKeyName, string sForeignConstraint, string sDescription, VDBForeignKeyOptions options) { lock(database.SyncRoot) { GetFocus(); return VistaDBAPI.ivdb_SetForeignKey(sForeignKeyName, sForeignConstraint, sDescription, (uint)options); } }
/// <summary> /// Get foreign key information (including options) by foreign key name /// </summary> /// <param name="sForeignKeyName">Foreign key name</param> /// <param name="sForeignKey">Foreign key</param> /// <param name="sPrimTable">Primary table</param> /// <param name="sPrimKey">Primary key</param> /// <param name="options">Foreign key options</param> /// <returns>Foreign key description</returns> public string GetForeignKey( string sForeignKeyName, out string sForeignKey, out string sPrimTable, out string sPrimKey, out VDBForeignKeyOptions options) { uint ulOptions = 0; StringBuilder foreignKey = new StringBuilder(VistaDBAPI.MAX_DESCRIPTION_SIZE); StringBuilder primTable = new StringBuilder(VistaDBAPI.MAX_DESCRIPTION_SIZE); StringBuilder primKey = new StringBuilder(VistaDBAPI.MAX_DESCRIPTION_SIZE); StringBuilder descr = new StringBuilder(VistaDBAPI.MAX_DESCRIPTION_SIZE); lock(database.SyncRoot) { GetFocus(); VistaDBAPI.ivdb_GetForeignKeyManaged( sForeignKeyName, foreignKey, primTable, primKey, VistaDBAPI.MAX_DESCRIPTION_SIZE, ref ulOptions, descr, VistaDBAPI.MAX_DESCRIPTION_SIZE); } sForeignKey = VistaDBAPI.CutString(foreignKey); sPrimTable = VistaDBAPI.CutString(primTable); sPrimKey = VistaDBAPI.CutString(primKey); switch(ulOptions) { case 1: options = VDBForeignKeyOptions.OnDeleteCascade; break; case 2: options = VDBForeignKeyOptions.OnUpdateCascade; break; default: options = VDBForeignKeyOptions.None; break; } return VistaDBAPI.CutString(descr); }