Sql 如何制作复合主键?
如何使组合主键与列_1+'-'+列_2类似,所选列来自另一个表?主键由定义主键的表中的列组成,而不是由另一个表中的列组成。您可以将其定义为:Sql 如何制作复合主键?,sql,sql-server,composite-primary-key,Sql,Sql Server,Composite Primary Key,如何使组合主键与列_1+'-'+列_2类似,所选列来自另一个表?主键由定义主键的表中的列组成,而不是由另一个表中的列组成。您可以将其定义为: create table t ( column_1 <type>, column_2 <type>, primary key (column_1, column_2) ); 您不指定类型,列的类型也不指定 我怀疑您正在创建一个连接表,而这些是对其他表的外键引用。这看起来像: create table t (
create table t (
column_1 <type>,
column_2 <type>,
primary key (column_1, column_2)
);
您不指定类型,列的类型也不指定
我怀疑您正在创建一个连接表,而这些是对其他表的外键引用。这看起来像:
create table t (
column_1 <type>,
column_2 <type>,
constraint fk_t_column_1 foreign key (column_1) references t1(column_1),
constraint fk_t_column_2 foreign key (column_2) references t1(column_2),
primary key (column_1, column_2)
);
主键或其组件可以具有对其他表的外键引用。主键是使用数据定义语言DDL创建的,该语言用于创建或修改对象。看起来您正在尝试使用数据操作语言DML创建主键,其中包括SELECT语句。这是不可能的
insert into items(key_id, order_id, item_id, product_id, quantity, list_price, discount)
select cast(sales.order_items.order_id as varchar(4)) + '-' + cast(sales.order_items.item_id as varchar(4)), sales.order_items.order_id,
sales.order_items.item_id, sales.order_items.product_id, sales.order_items.quantity, sales.order_items.list_price, sales.order_items.discount
from sales.order_items
另外,看起来您正试图通过组合串联column1+'-'+column2来创建单个主键。复合主键由多个列组成。-here是无关的,因为它看起来像是用于格式化,与行中的任何其他内容都不相关。我必须这样做:创建表t列\u PK主键;从现有表中,x必须以x.column_1+'-'+x.column_2的格式插入两列中的值。这不是复合主键,因为要将某些字段连接到单个字段中。这是家庭作业吗?如果是,您可以添加问题详细信息吗?我这里的问题是为什么需要这样做?key_id是值order_id和item_id的组合,其中包含值之间的中间划线。例如,在表格顺序中,项目顺序id为1615,项目id为3,键id为1615-3。@Charleh这是一项检查任务,可能会将实际约束与所需的信息表示混淆。破折号不会使这两列比单独的两列更独特。这一点不清楚。PS简单键有一列,复合键有多列。您描述的是一个简单键,而不是复合键。