Невозможно добавить ограничение внешнего ключа в таблицы [duplicate]

Не нужно использовать цикл. Вы можете использовать подход data.table, который будет более эффективным и быстрым.

library(data.table)

# create a column with row positions
setDT(dt)[, rowpos := .I]

# save each line of your dataset into a separate .csv file
dt[, write.csv(.SD, paste0("output_", rowpos,".csv")), 
                  by = rowpos, .SDcols=names(dt) ]

Делать вещи намного быстрее

# Now in case you're working with a large dataset and you want
# to make things much faster, you can use `fwrite {data.table}`*

dt[, fwrite(.SD, paste0("output_", rowpos ,".csv")), 
               by = rowpos, .SDcols=names(dt) ]

Использование Loop

# in case you still want to use a loop, this will do the work for you:

for (i in 1:nrow(dt)){
                      write.csv(dt[i,], file = paste0("loop_", i, ".csv"))
                      }

Дополнительно: сохранение подмножеств dataframe по группам вместо строк

# This line of code will save a separate `.csv` file for every ID 
# and name the file according to the ID


 setDT(dt)[, fwrite(.SD, paste0("output_", ID,".csv")), 
                       by = ID, .SDcols=names(dt) ]

* ps. обратите внимание, что fwrite все еще находится в версии разработки data.table 1.9.7. Go здесь для инструкций по установке.

0
задан a_horse_with_no_name 23 October 2015 в 16:37
поделиться

1 ответ

Вы должны ссылаться на полное ограничение PK, вы не можете просто ссылаться на один столбец, даже если вы делаете это для двух столбцов отдельно.

Вам нужно создать одиночный Ограничение FK, ссылающееся на на оба столбца :

CREATE TABLE Metal (
    Mstuff VARCHAR(40) NOT NULL,
    SubthingID INTEGER NOT NULL,
    consists_of INTEGER NOT NULL,
    foreign key (SubthingID, consists_of) 
       references subthing (SubthingID, consists_of) --<< ONE constraint with TWO columns
    PRIMARY KEY (SubthingID, consists_of)
);
1
ответ дан a_horse_with_no_name 19 August 2018 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: