1

多言語アプリケーション用のデータベーススキーマを設計しようとしています。私はこれまでこのアドレスからサンプルを見つけました。http://fczaja.blogspot.com/2010/08/multilanguage-database-design.html

しかし、私はこのサンプルを理解していません。最初にapp_productにId値を挿入する必要がありますか?これらの値がapp_product_translationのProductIdに当てはまることをどのように知ることができますか?

CREATE TABLE ref_language (
  Code Char(2)NOT NULL,
  Name Varchar(20) NOT NULL,
  PRIMARY KEY (Code)
);

CREATE TABLE app_product (
 Id Int IDENTITY NOT NULL,
 PRIMARY KEY (Id)
);

CREATE TABLE app_product_translation (
 ProductId Int NOT NULL,
 LanguageCode Char(2) NOT NULL,
 Description Text NOT NULL,
 FOREIGN KEY (ProductId) REFERENCES app_product(Id),
 FOREIGN KEY (LanguageCode) REFERENCES ref_language(Code)
);
4

1 に答える 1

1

それは SQLServer コードのように見え、その仮定に基づいています。

はい、最初に app_product を挿入する必要があります。ただし、id 列の値を挿入することはできません。これは ID 列であるため、自動的に割り当てられます。

チェックアウトできる 2 つのこと...挿入後に ID 列の値を見つけることができます。

  1. INSERT ステートメントの OUTPUT 句。ID 列だけでなく、挿入された任意の値を返すことができます。
  2. @@Identity 変数。(はるかに伝統的で人気があります)
declare @lastid int
insert into x values (1,2,3)
set @lastid = @@identity

insert into y values (@lastid, a, b, c)
于 2012-04-30T06:12:49.290 に答える