/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/


#ifndef __com_sun_star_sdbc_KeyRule_idl__
#define __com_sun_star_sdbc_KeyRule_idl__

 module com {  module sun {  module star {  module sdbc {


/** determines the rules for foreign key constraints.
 */
published constants KeyRule
{

	/** a possible value for the column's
			<code>UPDATE_RULE</code>
			and
			<code>DELETE_RULE</code>
			in the
			<type scope="com::sun::star::sdbc">XResultSet</type>
			 objects returned by the methods
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getImportedKeys()</member>
			 ,
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getExportedKeys()</member>
			 ,
			 and
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getCrossReference()</member>
			 .
			 <P>
			 For the column
			 <code>UPDATE_RULE</code>
			 ,
			 it indicates that
			 when the primary key is updated, the foreign key (imported key)
			 is changed to agree with it.
			 </P>
			 <P>
			 For the column
			 <code>DELETE_RULE</code>
			,
			 it indicates that
			 when the primary key is deleted, rows that imported that key
			 are deleted.
			 </P>
	 */
	const long CASCADE	= 0;
	//-------------------------------------------------------------------------

	/** a possible value for the column's
			 <code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			in the
			 <type scope="com::sun::star::sdbc">XResultSet</type>
			 objects returned by the methods
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getImportedKeys()</member>
			 ,
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getExportedKeys()</member>
			 ,
			 and
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getCrossReference()</member>
			 .
			 <P>
			 For the column
			 <code>UPDATE_RULE</code>
			, it indicates that
			 a primary key may not be updated if it has been imported by
			 another table as a foreign key.
			 </P>
			 <P>
			 For the column
			 <code>DELETE_RULE</code>
			, it indicates that
			 a primary key may not be deleted if it has been imported by
			 another table as a foreign key.
			 </P>
	 */
	const long RESTRICT = 1;
	//-------------------------------------------------------------------------

	/** a possible value for the column's
			 <code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			in the
			 <type scope="com::sun::star::sdbc">XResultSet</type>
			  objects returned by the methods
			<member  scope="com::sun::star::sdbc">XDatabaseMetaData::getImportedKeys()</member>
			 ,
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getExportedKeys()</member>
			 ,
			 and
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getCrossReference()</member>
			 .
			 <P>
			 For the columns
			 <code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			,
			 it indicates that
			 when the primary key is updated or deleted, the foreign key (imported key)
			 is changed to <code>NULL</code>.
			 </P>
	 */
	const long SET_NULL  = 2;
	//-------------------------------------------------------------------------

	/** a possible value for the column's
			<code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			 in the
			 <type scope="com::sun::star::sdbc">XResultSet</type>
			 objects returned by the methods
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getImportedKeys()</member>
			 ,
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getExportedKeys()</member>
			 ,
			 and
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getCrossReference()</member>
			 .
			 <P>
			 For the columns
			 <code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			,
			 it indicates that if the primary key has been imported, it cannot be updated or deleted.
			 </P>
	 */
	const long NO_ACTION = 3;
	//-------------------------------------------------------------------------

	/** a possible value for the column's
			<code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			in the
			 <type scope="com::sun::star::sdbc">XResultSet</type>
			 objects returned by the methods
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getImportedKeys()</member>
			 ,
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getExportedKeys()</member>
			 ,
			 and
			 <member  scope="com::sun::star::sdbc">XDatabaseMetaData::getCrossReference()</member>
			 .
			 <P>
			 For the columns
			 <code>UPDATE_RULE</code>
			 and
			 <code>DELETE_RULE</code>
			,
			 it indicates that
			 if the primary key is updated or deleted, the foreign key (imported key)
			 is set to the default value.
			 </P>
	 */
	const long SET_DEFAULT  = 4;
};

//=============================================================================

}; }; }; };

/*===========================================================================
===========================================================================*/
#endif
