1

すべてのテーブルに対して一般的な「更新」機能をコーディングしようとしています。ただし、主キーの名前はそれぞれ異なります。主キー列の名前を使用する代わりに、主キー列を自動的に選択するようなものを使用することは可能ですか?

UPDATE .... WHERE PRIMARY KEY = 'id_number'

ありがとう!

編集:申し訳ありませんが、はっきりしていないようですが、私は本当に専門家ではないことを認めなければなりません. したがって、INT型の主キー列が1つしかないテーブルで動作するようにしたいと考えています。そして、可能であれば、2 つのクエリ (主キー列の名前を取得するためのクエリ + クエリ自体) を作成することは避けたいと思います。最初は、各テーブル (mo_id、rc_id など) の列の名前が正しいことを確認する必要がないようにしたかったのです。

4

1 に答える 1

1

すべてのテーブルに対して一般的な更新機能を作成することはできません。実際には、私が考えているように、ストアドプロシージャである必要がありますが、それは別の問題です。@Martin Smithが指摘しているように、PKはコンポジットにすることができます。私はそれをユニークにするために4つのフィールドが結び付けられたPKを持っています。どのようにそれを説明できますか?また、PKはさまざまなタイプにすることができます。この汎用sprocでそれらすべてをコーディングしますか?スニペットは、PKがchar型であると想定しています。これはもっともらしく見えません。任意のテーブルのPKを識別するためのコードをいくつか見つけましたが、その後はさらに多くの作業を行う必要があり、完全な要件は明確ではありません。

ボールトから(これはSQL Serverで機能します):

 SELECT KU.table_name as tablename,column_name as primarykeycolumn
 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
 INNER JOIN
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
 ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
 TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
 and ku.table_name='yourTableName'
 ORDER BY KU.TABLE_NAME, KU.ORDINAL_POSITION;

SQL Serverから:SQLクエリを使用してテーブルの主キーを取得します

于 2012-07-11T15:50:02.643 に答える