[英]I have been assigned a project for currency exchange rate IN SQL . How to save exchange rates for currencies?
我必须创建表格货币
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency),
FOREIGN KEY (to_currency) REFERENCES currencies(from_currency)
)
我必须保存6种货币的汇率:(inr,eur,cad,usd,gbp,cfp)但问题是我无法在第一列中存储相同的值,即我可以按如下方式保存货币汇率
from_curr ER --> to_curr
INR --> 60 --> USD
USD --> 0 --> USD
GBP --> 70 --> USD
对于所有货币等,但现在的问题是,当我尝试为其他货币存储货币时
INR --> 1 --> USD
or
GBP --> 70 --> USD
我收到错误重复值,是不允许的吗? 如何解决这个问题?
您不是在存储货币,而是在存储两种货币。
CREATE TABLE currency_exchange_rates (
from_currency CHAR(30) NOT NULL,
to_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
PRIMARY KEY (from_currency,to_currency),
)
我还建议使用一个单独的表格,其中包含六种货币,并链接上述表格以确保有效的货币代码。 您可能还想保留一个日期字段(并将其作为主键的一部分),因为费率会随着时间而变化...
您应该创建一个复合主键,因为两种货币对可以唯一地标识一条记录。
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency, to_currency)
)
或者,您可以为主键添加一个新列,例如作为自动增量列:
CREATE TABLE currencies (
[Id] [int] IDENTITY(1,1) NOT NULL
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY ([Id])
)
当然不能。 那是因为您定义了PRIMARY KEY ()
。 因此,此列仅允许使用不同的值。 相反,您需要的是成对的from_currency / to_currency是唯一的。 您可以通过在表中定义一个复合PK来做到这一点:
CREATE TABLE currencies (
from_currency CHAR(30) NOT NULL,
ExchRate REAL NOT NULL,
to_currency CHAR(30) NOT NULL,
PRIMARY KEY (from_currency, to_currency)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.