Сначала отметьте причину, по которой я задаю вопрос, и выразите надежду, что это возможно.
В MS SQL Server 2016 у вас есть возможность создать таблицу со столбцом, определенным математически, аналогичным row_number() over(order by (select 1)) as oid
через identity(1,1)
в определении таблицы.
Это приводит к вопросу ...
Есть ли встроенная функция для определения таблицы примерно следующего вида? (Да, это люди псевдокода ...)
CREATE TABLE Persons (
LastName varchar(255) NOT NULL
FirstName varchar(255),
Age int,
MemberInFamilyID int Row_number() over(partition by LastName order by
Age,FirstName),
);
Я знаю, что вы можете просто определить столбец и заполнить его постфактум, но мне любопытно, есть ли эффективный способ сделать это в определении таблицы, которая заполняется при вставке.
Мое текущее приложение - MS SQL Server, но возможность реализации в любой базе данных также была бы полезной информацией. В частности, PostgreSQL.
unique index on tablename (LastName,dob)
это сделает. если у вас нет близнецов и дата рождения не является отметкой времени ... обычно люди используют какой-либо идентификатор человека, например, в удостоверении личности, паспорте или водительских правах ... Конечно, вы понимаете, что фамилия даже не является уникальным идентификатором для семьи - person Vao Tsun   schedule 23.01.2018