2012-01-25 21 views
-2

可能性の重複:
別のテーブルの外部キーであるプライマリ・キー列を削除

delete primary key row which is foreign key of another table
Customers

表:

CustomerID 
Addresses

表:

AddressId 

Customers_Addresses

CustomerID 
AddressID 

Customer_person

CustomerID 
PersonID 

IはCustomerIDによって識別Customerテーブルから行を削除する、及びIはAddressescustomer_personテーブルを更新します。

このようなクエリを作成するにはどうすればよいですか?私を助けてください。

+0

新しい質問をする代わりに、古い質問を編集して理解できるようにします。あなたは["完全な質問を書く"](http://tinyurl.com/so-hints)が役に立つ指針を見つけるかもしれません。また、アドホックスキーマを使用する代わりに、テーブルスキーマとサンプルデータに実際の[サンプルコード](http://sscce.org/)(SQL文)を使用してください。 – outis

答えて

0

レコードを削除しないでください。代わりにこの方法を使用してください。 Boolean型の "isDeleted"という名前の列を作成します。デフォルト値は "false"です。レコードを削除するときはいつでも、そのレコードを "真"にするだけです。変更を行って選択したクエリで、isDeleted = false;

+1

指定されていないビジネスロジックを導入しています。さらに、データ型は「ビット」であり、ブール値ではない。なぜ日時を使用しないのですか?なぜ、削除したユーザーを示すためにvarcharを使用しないのですか? –

0

のレコードのみを選択します。Cascading Deletesを使用すると、簡単に目標を達成できます。

0

あなたはそれは、SQLサーバーによって禁止されているので、あなたは、参照される行を削除することができないでしょう代わりに{CASCADE、SETのNULL、SETのDEFAULT}

をDELETEなどONとして、あなたのFKey上のいくつかの特定のオプションを設定する必要があります誠実さのために。

したがって、参照するテーブルの値をNULLまたは他のDEFAULT値に設定することができます。

またはご参照行は親の行せずに、いくつかの意味を持っている場合は、あまりにも

それともそれを削除する - そして何かがあなたのDB設計と間違っている - あなたは、[F]キーまたはスキーマを必要としないのいずれかであります正規化されていません。

関連する問題