如何用不同表的多个外键创建表

时间:2019-05-07 05:51:24

标签: mysql sql foreign-keys

我需要根据列值创建一个带有外键的表,

render() { let activeButton = this.props.activeStyle ? this.props.activeStyle : styles.activeButton; return ( <View style={[styles.container, this.props.containerStyle, this.state.selected ? activeButton : null]}> <TouchableOpacity onPress={() => { this.setState({ selected: !this.state.selected }); this.props.onPress(); }}> { this.btnBackgroundImage() } </TouchableOpacity> </View> ); }

table_1

CREATE TABLE table_1( index_value INT NOT NULL, result VARCHAR(10) DEFAULT NULL );

table_2

表table_需要创建两个连接到CREATE TABLE table_2( index_value INT NOT NULL, result VARCHAR(10) DEFAULT NULL ) table_1的外键,如下所示:

table_2

table_need

但是我真正想要的表CREATE TABLE table_need( index_value INT NOT NULL, category VARCHAR(10) DEFAULT NULL, FOREIGN KEY (index_value) REFERENCES table_1(index_value) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (index_value) REFERENCES table_2(index_value) ON DELETE CASCADE ON UPDATE CASCADE); ) 是根据列table_need的值连接外键,条件:

  1. 如果category的值为“ A”,则将外键(index_value)连接到category
  2. 如果table_1的值为“ B”,则将外键(索引值)连接到category

这是一个问题,如何创建满足条件的表table_2并且不需要创建更多表,有什么想法?

1 个答案:

答案 0 :(得分:0)

您可以创建一个表,而不是下面的table_1和table_2-

CREATE TABLE table_1
(
    index_value INT NOT NULL,
    category VARCHAR(1)  NOT NULL,
    result VARCHAR(10)  DEFAULT NULL
);

根据您的要求在类别列中存储A或B。现在,您可以使用CASCADE使用一个外键引用创建表“ table_need”。为了进一步选择数据,只需通过过滤Category ='A'或Category ='B'来区分记录