Пример #1
0
		/// <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);
			}
		}
Пример #2
0
		/// <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);
		}