自动将值替换为外键ID?

时间:2016-12-27 16:10:29

标签: sql sqlalchemy

我有一个SQL表:

TestResult
- id
- test_result 
- test_name

每次测试都会创建一个会话,在 TestResult 表中创建大约1000条记录,我发现现在我有很多 test_name 重复。

如何避免复制?

我认为创建两个表是正确的:

TestName
- name (Primary Key)

TestResult
- id (Primary Key)
- result
- name_id (Foreign Key)

但是如何自动将例如'test_1'替换为1(来自TestName表的id)?

我应该在1000个测试周期的每个步骤中执行此操作吗? 1.如果存在,尝试获取name_id 2.如果不存在则创建它 3.使用以前的id。将记录添加到TestResult。

我认为这太慢而且太愚蠢了。这里的好习惯是什么?或者让它成为现实也许是一个好主意?

1 个答案:

答案 0 :(得分:0)

设置表但保留test_name列和test_id(新FK),然后:

UPDATE T SET
    T.name_id = tn.name
FROM TestResult T
INNER JOIN TestName TN on 
    T.test_name = TN.name