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 列的值。它是自动分配的,因为它是一个标识列。

您可以检查两件事...在插入后查找标识列的值。

  1. INSERT 语句的 OUTPUT 子句。它可以返回任何插入的值,而不仅仅是标识列。
  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 回答