我有一个数据库包含像这个查询
这样的身份证表CREATE TABLE ID_CARD
(
N_CARD VARCHAR(20) NOT NULL,
ISSUE_DATE DATE NOT NULL,
ID_TYPE VARCHAR(2) NOT NULL,
CONSTRAINT PKEY_ID_CARD PRIMARY KEY(N_CARD, ISSUE_DATE)
);
但身份证可以具有相同的N_CARD
但具有不同的ISSUE_DATE
,并且身份证可以具有相同的ISSUE_DATE
但不同N_CARD
,因此两张身份证可以
ISSUE_DATE
。
使用SQL Workbench / j,此表的SQL源是
DROP TABLE ID_CARD;
CREATE CACHED TABLE ID_CARD
(
N_CARD VARCHAR(20) NOT NULL,
ISSUE_DATE DATE NOT NULL,
ID_TYPE VARCHAR(2) NOT NULL
);
ALTER TABLE ID_CARD
ADD CONSTRAINT PKEY_ID_CARD
PRIMARY KEY (N_CARD, ISSUE_DATE);
CREATE UNIQUE INDEX FKEY_N_CARD_CLIENT_INDEX_8
ON ID_CARD (N_CARD ASC);
CREATE UNIQUE INDEX FKEY_ISSUE_DATE_CLIENT_INDEX_8
ON ID_CARD (ISSUE_DATE ASC);
执行此查询时
INSERT INTO ID_CARD (N_CARD, ISSUE_DATE, ID_TYPE)
VALUES ('101215', DATE '2019-11-11', 'DL');
commit;
INSERT INTO ID_CARD(N_CARD,ISSUE_DATE,ID_TYPE)VALUES('101215',DATE '2019-11-12','DL');
commit;
此错误
Unique index or primary key violation: "FKEY_N_CARD_CLIENT_INDEX_8 ON
PUBLIC.ID_CARD(N_CARD) VALUES ('101215', 9)"; SQL statement:
INSERT INTO ID_CARD(N_CARD,ISSUE_DATE,ID_TYPE)VALUES('101215',DATE '2019-11-11','DL') [23505-193] [SQL State=23505, DB Errorcode=23505]
问题是如何在数据库中表示这种情况?
答案 0 :(得分:1)
而不是两个唯一索引
CREATE UNIQUE INDEX FKEY_N_CARD_CLIENT_INDEX_8
ON ID_CARD (N_CARD ASC);
CREATE UNIQUE INDEX FKEY_ISSUE_DATE_CLIENT_INDEX_8
ON ID_CARD (ISSUE_DATE ASC);
您需要一个唯一的索引
CREATE UNIQUE INDEX FKEY_N_DT_CLIENT_INDEX_8
ON ID_CARD (N_CARD ASC, ISSUE_DATE ASC);
答案 1 :(得分:0)
您的第一个create table
声明符合您的要求:
CREATE TABLE ID_CARD (
N_CARD VARCHAR(20) NOT NULL,
ISSUE_DATE DATE NOT NULL,
ID_TYPE VARCHAR(2) NOT NULL,
CONSTRAINT PKEY_ID_CARD PRIMARY KEY(N_CARD, ISSUE_DATE)
);
但是,唯一索引不正确:
CREATE UNIQUE INDEX FKEY_N_CARD_CLIENT_INDEX_8 ON ID_CARD (N_CARD ASC);
CREATE UNIQUE INDEX FKEY_ISSUE_DATE_CLIENT_INDEX_8 ON ID_CARD (ISSUE_DATE ASC);
我不知道为什么要创建它们,但是你应该放弃它们。
答案 2 :(得分:0)
嗨,我用这个查询解决了我的问题
with tf.Session() as sess:
variables_names =[v.name for v in tf.trainable_variables()]
values = sess.run(variables_names)
for k,v in zip(variables_names, values):
print(k, v)
我不知道这是否是一个很好的解决方案,但我的问题已经解决了 我在这里的任何优化