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) 
); 

回答

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)