1

やりたいことを実行するための SQL トリガーを取得するのに問題があります。別のフィールドが更新されたときに、テーブルのフィールドにデータを入力する必要があります。より具体的には、従業員 ID が入力されたときに、バーコードを機能させるために Unicode を生成する必要があります。ユニコードを生成するコードを書きましたが、トリガーが機能するだけで済みます。

これは私が必要とするもののスケルトンです:

CREATE TRIGGER Unicode
AFTER UPDATE of unique.id
ON table [dbo].table

FOR EACH ROW???
AS
BEGIN
     SELECT (unique.id2
            now I need to set unique.id2 to the unicode function that I wrote

私はこれで間違った軌道に乗っているように感じます。

これは、私が使用しているデータベースの画像です (作成していません) http://i.imgur.com/4wkfY.png。SQL サーバー 2008 の実行

PersonalDataID[2] が更新されたとき (従業員 ID)。PersonalDataID[32] のコードを生成する必要があります。

あなたが与えることができるどんな助けにも感謝します!

4

3 に答える 3

4

SQL Server に習熟するには、まず、ほとんどの操作がセットとして適用されたときに最適に機能するという事実に慣れる必要があります。「行ごと」という観点から考えると、ほとんどの場合、間違った道に導かれます。

この場合、更新は複数の行に影響を与える可能性があるため、それらすべての行を一度に処理する必要があります。これは、挿入された疑似テーブルを使用して行うことができます。私はあなたの写真を見ましたが、あなたのサンプルコードはかなり混乱していて、2つを関連付ける方法がわかりません. したがって、実際のスキーマに合わせて調整する必要がある簡単な例を次に示します。

CREATE TRIGGER dbo.UpdateUnicodeColumn
ON dbo.table
FOR UPDATE
AS
BEGIN
  SET NOCOUNT ON;

  UPDATE t SET BarcodeColumn = (your calculation, a function, maybe?)
    FROM dbo.table AS t
    INNER JOIN inserted AS i
    ON t.key = i.key;
END
GO
于 2012-08-15T19:37:13.240 に答える
0

構文は次のとおりです。somefield を入力する必要のあるフィールドに置き換え、DestinationTable を Unicode レコードを追加するテーブルに置き換えるだけです。

CREATE TRIGGER Unicode ON SomeTable
AFTER UPDATE 
AS

INSERT INTO DestinationTable
(somefield)
SELECT somefield FROM INSERTED
GO
于 2012-08-15T19:37:05.893 に答える
0

「FOR EACH ROW???」は必要ないと思います :P

CREATE TRIGGER Unicode
ON table [dbo].table
AFTER UPDATE of unique.id
AS
Begin
  (SELECT unique.id2...)

全体的に上記の回答を参照してください。

于 2012-08-15T19:34:55.143 に答える