如何使复合主键像 column_1 + '-' + column_2 ,所选列是否来自另一个表?
column_1 + '-' + column_2
mf98qq941#
主键由定义主键的表中的列组成,而不是由另一个表中的列组成。您可以将其定义为:
create table t ( column_1 <type>, column_2 <type>, primary key (column_1, column_2) );
你没有指定类型,所以 <type> 列的类型。我怀疑您正在创建一个连接表,而这些是对其他表的外键引用。看起来像:
<type>
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) );
主键或其组件可以具有对其他表的外键引用。
yuvru6vn2#
主键是使用数据定义语言(ddl)创建的,ddl用于创建或修改对象。看起来您正在尝试使用数据操作语言(dml)创建一个主键,其中包括select语句。这是不可能的。而且,看起来您正试图通过组合串联来创建单个主键 column1 + '-' + column2 . 复合主键由多列组成。这个 - 这里是无关的,因为它看起来像是用来格式化的,与行中的任何其他内容都没有关系。
column1 + '-' + column2
-
mtb9vblg3#
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
3条答案
按热度按时间mf98qq941#
主键由定义主键的表中的列组成,而不是由另一个表中的列组成。您可以将其定义为:
你没有指定类型,所以
<type>
列的类型。我怀疑您正在创建一个连接表,而这些是对其他表的外键引用。看起来像:
主键或其组件可以具有对其他表的外键引用。
yuvru6vn2#
主键是使用数据定义语言(ddl)创建的,ddl用于创建或修改对象。看起来您正在尝试使用数据操作语言(dml)创建一个主键,其中包括select语句。这是不可能的。
而且,看起来您正试图通过组合串联来创建单个主键
column1 + '-' + column2
. 复合主键由多列组成。这个-
这里是无关的,因为它看起来像是用来格式化的,与行中的任何其他内容都没有关系。mtb9vblg3#